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 选择的约定更有用。
我有以下数组。
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 选择的约定更有用。