numpy
import numpy as np
(1)标量:除了 Python 的 int,你可以使用 uint8、int8、uint16、int16 等类型。
s = np.array(5)
(2)向量:可以将 Python 列表传递给 array 函数
v = np.array([1,2,3])
(3)矩阵:提供列表的列表,其中每个列表代表一行。
m = np.array([[1,2,3], [4,5,6], [7,8,9]])
(4)张量:张量与向量和矩阵一样,但张量可以有更多的维度。
创建一个 3x3x2x1 的张量:
t = np.array([[[[1],[2]],[[3],[4]],[[5],[6]]],[[[7],[8]],\
[[9],[10]],[[11],[12]]],[[[13],[14]],[[15],[16]],[[17],[17]]]])
t.shape打印矩阵的维度, 会返回 (3, 3, 2, 1)
t[2][1][1][0] 将返回 16
更改形状:
v = np.array([1,2,3,4]) v.shape 会返回 (4,)
x = v.reshape(1,4) OR x = v[None, :] x.shape 会返回 (1,4)
x = v.reshape(4,1) OR x = v[:, None]
NumPy 矩阵乘法:
(1)元素级乘法
m * n
np.multiply(m, n)
(2)矩阵乘积
a.shape (2,4); b.shape(4,3)
c = np.matmul(a, b)
有时候,在用 matmul 函数的地方,可能会看到 NumPy 的 dot 函数。
如果矩阵是二维的,那么 dot 和 matmul 函数的结果是相同的。
NumPy 矩阵转置:
NumPy 在进行转置时不会实际移动内存中的任何数据,只是改变对原始矩阵的索引方式,所以是非常高效的。
但是,这也意味着你要特别注意修改对象的方式,因为它们共享相同的数据。
所以记住,将转置视为矩阵的不同视图,而不是完全不同的矩阵。
m_t = m.T