关于np.all与轴的用法
问题内容:
我试图测试的用法np.all
,测试数组a
是
a=array([[[ 0, 0, 0],
[ 0, 0, 0],
[ 0, 0, 0],
[ 0, 0, 0]],
[[ 0, 0, 255],
[255, 255, 255],
[ 0, 0, 0],
[255, 0, 0]]])
b = [255,0,255]
c = np.all(a==b,axis=1)
我有
c= array([[False, True, False],
[False, False, False]], dtype=bool)
我不明白TRUE
c是从运行中获得的np.all(a==b,axis=1)
。
问题答案:
由于您呼叫np.all()与axis=1
,逻辑,并将在第一个维度,即所有的列(从零开始编号)进行。
您的数组是:
a = np.array([[[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]],
[[0, 0, 255],
[255, 0, 255],
[0, 0, 0],
[255, 255, 0]]])
因此,第一栏a
,即[0, 0, 0, 0]
和的第一个元素b
,即255
会经过与运算,给出结果False
。所有操作如下:
[0, 0, 0, 0] & 255 => False
[0, 0, 0, 0] & 0 => True
[0, 0, 0, 0] & 255 => False
[0, 255, 0, 255] & 255 => False
[0, 255, 0, 0] & 0 => False
[255, 255, 0, 0] & 255 => False
这将得出以下最终结果:
[[False True False]
[False False False]]
由于未传递keepdims=True
参数,因此结果列表的形状[2, 3]
即来自[2, 4, 3]
和[1, 1, 3]
(请参见NumPy广播规则),因此将在上执行操作index=1
。否则,结果将为shape [2, 1, 3]
。