gpt4 book ai didi

python - numpy.where 函数有什么问题?

转载 作者:太空宇宙 更新时间:2023-11-04 08:45:20 26 4
gpt4 key购买 nike

我有一个 numpy 数组(2 个元素列表的列表)a 下面给出,我有一个 2 个元素列表 [30.94, 0.] 我会喜欢寻找。

当我执行以下操作时,我没有得到想要的结果。为什么?

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 行符合预期。请注意,将 == 与 float 一起使用的常见注意事项将在此处适用。

关于python - numpy.where 函数有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41290865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com