您应该抵制将numpy
数组视为具有行和列的冲动,而应将它们视为具有维度和形状。这是区分np.array
和的重要一点np.matrix
:
x = np.array([1, 2, 3])
print(x.ndim, x.shape) # 1 (3,)
y = np.matrix([1, 2, 3])
print(y.ndim, y.shape) # 2 (1, 3)
一个n -D 数组只能使用n 个整数来表示其形状。因此,一维数组仅使用 1 个整数来指定其形状。
实际上,将 1-D 和 2-D 数组之间的计算结合起来对 来说不是问题,而且由于在 Python 3.5 中引入了矩阵运算,因此在numpy
语法上也很干净。@
因此,很少需要求助于来np.matrix
满足查看预期行数和列数的冲动。
在需要二维的极少数情况下,您仍然可以使用numpy.array
一些操作:
a = np.array([1, 2, 3])[:, None] # equivalent to np.array([[1], [2], [3]])
print(a.ndim, a.shape) # 2 (3, 1)
b = np.array([[1, 2, 3]]) # equivalent to np.array([1, 2, 3])[:, None].T
print(b.ndim, b.shape) # 2 (1, 3)