numpy.all轴参数不正常?
问题内容:
我有以下数组。
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
表示将元素 沿着 轴0a[0, 0]
进行“与”运算,因此将“与”与a[1, 0]
,a[0, 1]
将“与”与a[1, 1]
“等”。指定的轴已折叠。
您可能会认为它需要np.all(a[0])
,np.all(a[1])
等等,通过沿轴0进行索引并np.all
在每个子数组上执行操作来选择子数组。这与它的工作方式相反。会折叠除指定轴以外的所有轴。
对于2D阵列,一种约定比另一种约定没有太多优势,但是对于3D及更高版本,NumPy选择的约定更加有用。