我有一个以下数组。
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功能有什么误解?
答案 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选择的约定更有用。