gpt4 book ai didi

python - python numpy.where() 是如何工作的?

转载 作者:IT老高 更新时间:2023-10-28 21:10:00 25 4
gpt4 key购买 nike

我正在玩 numpy 并浏览文档,我发现了一些魔法。即我说的是 numpy.where():

>>> x = np.arange(9.).reshape(3, 3)
>>> np.where( x > 5 )
(array([2, 2, 2]), array([0, 1, 2]))

他们如何在内部实现您能够将 x > 5 之类的内容传递给方法?我想这与 __gt__ 有关,但我正在寻找详细的解释。

最佳答案

How do they achieve internally that you are able to pass something like x > 5 into a method?

简短的回答是他们没有。

对 numpy 数组的任何类型的逻辑操作都会返回一个 bool 数组。 (即 __gt____lt__ 等都返回给定条件为真的 bool 数组。

例如

x = np.arange(9).reshape(3,3)
print x > 5

产量:

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

这与 if x > 5: 如果 x 是一个 numpy 数组时引发 ValueError 的原因相同。它是一组真/假值,而不是单个值。

此外,numpy 数组可以由 bool 数组索引。例如。 x[x>5] 产生 [6 7 8],在这种情况下。

老实说,您实际上很少需要 numpy.where,但它只返回 bool 数组为 True 的索引。通常你可以用简单的 bool 索引来做你需要的事情。

关于python - python numpy.where() 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5642457/

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