numpy.all 轴参数行为不当?

numpy.all axis parameter misbehavior?

我有以下数组。

a = np.array([[0, 5, 0, 5],
              [0, 9, 0, 9]])
>>>a.shape 
Out[72]: (2, 4)

>>>np.all(a,axis=0)
Out[69]: 
array([False,  True, False,  True], dtype=bool)

>>>np.all(a,axis=1)
Out[70]: 
array([False, False], dtype=bool)

因为轴 0 表示二维数组中的第一个轴(按行),

我预计当给出 np.all(a,axis=0) 时,它会检查每一行的所有元素是否为 True。

但它似乎检查 每列 因为它给出了 4 个元素的输出,例如 array([False, True, False, True], dtype=bool).

我对 np.all 功能有什么误解?

axis=0 表示沿 轴 0 将元素与 ,因此 a[0, 0]a[1, 0]a[0, 1] 相与与 a[1, 1] 等进行 AND 运算。指定的轴折叠。

您可能认为需要 np.all(a[0])np.all(a[1]) 等,通过沿轴 0 进行索引并在每个子数组上执行 np.all 来选择子数组。这与它的工作方式相反;这会折叠除指定轴之外的每个轴。

对于 2D 数组,一种约定相对于另一种约定没有太多优势,但对于 3D 和更高版本,NumPy 选择的约定更有用。