numpy.all轴参数不当行为?

时间:2017-03-24 22:21:05

标签: python numpy axis

我有一个以下数组。

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表示2D数组中的第一个轴(行方向),

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

但似乎每列检查 会导致输出为array([False, True, False, True], dtype=bool)等4个元素。

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

1 个答案:

答案 0 :(得分:3)

axis=0表示将元素与沿轴0合并在一起,因此a[0, 0]a[1, 0]进行AND运算,a[0, 1]与{{}进行AND运算1}}等。指定的轴会折叠。

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

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