gpt4 book ai didi

python - bool 输入的 numpy.where 和 numpy.argwhere 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 07:55:48 26 4
gpt4 key购买 nike

我对 numpy.where 和 numpy.argwhere 感到困惑。例如,

 aa = (np.arange(10) + 5).reshape(2, -1)
如果我跑
 res = np.where(((aa == 7) | (aa == 8)))
然后
 >>> res
(array([0, 0]), array([2, 3]))
如果我跑
 res2 = np.argwhere(((aa == 7) | (aa == 8)))
我得到
 >>> res2
array([[0, 2],
[0, 3]])
numpy.where 和 numpy.argwhere 都给出了 bool 数组中非零元素的坐标。所以如果输入是 bool 数组,这两个函数基本上做同样的事情。这是正确的吗?

最佳答案

如果你看 docs for np.where :

When only condition is provided, this function is a shorthand for np.asarray(condition).nonzero()


和 nonzero 返回每个维度的索引列表元组,其中原始数组为非零(或假)。 np.argwhere另一方面,返回一个索引列表,您可以使用它来索引原始数组。所以本质上他们在做类似的事情,但是为了获得与 np.argwhere 相同的输出来自 np.where你需要做: np.vstack(np.where(((aa == 7) | (aa == 8)))).T反之亦然:
a = np.argwhere(((aa == 7) | (aa == 8)))
tuple(a[:, i] for i in range(a.shape[1]))

关于python - bool 输入的 numpy.where 和 numpy.argwhere 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66711425/

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