Python numpy 数组“大小”让我很困惑
a = np.array([1,2,3])
a.size = (3, )
------------------------
b = np.array([[2,1,3,5],
[2,2,5,1],
[3,6,99,5]])
b.size = (3,4)
'b' 有意义,因为它每行有 3 行 4 列 但是 'a' size = (3, ) 怎么样?因为它有 1 行 3 列,所以不应该是 (1,3) 吗?
最佳答案
您应该抵制将 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 个整数来指定其形状。
实际上,一维和二维数组之间的组合计算对于 numpy
来说不是问题,而且由于 Python 3.5 中引入了 @
矩阵运算,因此语法上很干净。因此,很少需要借助 np.matrix
来满足查看预期行数和列数的冲动。
在需要 2 维的极少数情况下,您仍然可以使用 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)
关于python - numpy 数组大小的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48727120/