【问题标题】:numpy.all axis parameter misbehavior?numpy.all 轴参数异常?
【发布时间】:2017-03-24 22:21:05
【问题描述】:

我有以下数组。

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) 时,它会检查每一行的所有元素是否为真。

但似乎检查每列,因为它会输出 4 个元素,例如 array([False, True, False, True], dtype=bool)

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

【问题讨论】:

  • axis=0 是 2D 的每列。轴从左开始为 0、1、2 等。
  • 我记得看到一个很好的副本,但我找不到它。
  • axis 参数视为您正在折叠的轴。当您传递axis=0 时,您会将所有行折叠成一行。
  • stackoverflow.com/questions/41733479/… - 解释了“沿轴求和”的含义。

标签: python numpy axis


【解决方案1】:

axis=0 表示将元素与 沿 轴 0 一起与,因此 a[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 选择的约定更有用。

【讨论】:

  • 嗯,虽然有点晚了,但还是谢谢你!我终于明白了。!
猜你喜欢
  • 2015-09-15
  • 1970-01-01
  • 2013-12-16
  • 2010-09-26
  • 2020-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多