python - numpy 数组大小的困惑

标签 python arrays numpy size numpy-ndarray

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/

相关文章:

python - 一维 NumPy 数组中最后一个值的地址

python - 如何在 matplotlib 中调整 x 轴

python - 什么是中间值?

java - 如何从 Java 中的数组中删除对象?

python - 如何使用线性关系计算python中的新字段

python - scipy.optimize.lsq_linear 边界错误

python - python中使用html标签进行字符串分割

python - 获取错误 - ModuleNotFoundError : No module named 'xlsxwriter' with ExcelWriter

c - 从命令行获取 128 位整数

arrays - bash脚本在expect代码中增加数组索引