numpy.where函数有什么问题?

Drzbir

我在下面给出了一个numpy数组(2个元素列表的列表)a,并且我[30.94, 0.]想查找2个元素的列表

当我执行以下操作时,不会得到理想的结果。为什么?

import numpy as np
a = np.array([[  5.73,   0.  ],
              [ 57.73,  10.  ],
              [ 57.73,  20.  ],
              [ 30.94,   0.  ],
              [ 30.94,  10.  ],
              [ 30.94,  20.  ],
              [  4.14,   0.  ],
              [  4.14,  10.  ]])

np.where(a==np.array([30.94, 0.]))

但是我明白了

(array([0, 3, 3, 4, 5, 6]), array([1, 0, 1, 0, 0, 1]))

这是不对的。

迪特里希·埃普

正如Divakar所暗示的,a == np.array([30.94, 0.])这不是您所期望的。广播该数组,并按元素进行比较。结果如下:

array([[False,  True],
       [False, False],
       [False, False],
       [ True,  True],
       [ True, False],
       [ True, False],
       [False,  True],
       [False, False]], dtype=bool)

但是,我们可以通过以下方式获得所需的结果np.all

>>> np.all(a==np.array([30.94, 0.]), axis=-1)
array([False, False, False,  True, False, False, False, False], dtype=bool)
>>> np.where(_)
(array([3]),)

因此,您可以看到第3行符合预期。请注意,==与浮点数一起使用的通常注意事项将在此处适用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章