gpt4 book ai didi

arrays - 在一维数组上使用 numpy_where

转载 作者:行者123 更新时间:2023-12-05 00:24:05 26 4
gpt4 key购买 nike

我正在尝试使用 numpy_where 来查找特定值的索引。虽然我在网上搜索了很多,包括 stackoverflow,但我没有找到一个简单的 1D 示例。

ar=[3,1,4,8,2,1,0]
>>> np.where(ar==8)
(array([], dtype=int64),)

我希望 np.where(ar==8) 返回数组中 8 的索引/位置。
我究竟做错了什么?它在我的数组中吗?
谢谢

最佳答案

这是 Python 和 numpy 中变量类型范围的一个很好的例子。初学者可能会感到困惑。正在发生的事情是[3,1,4,8,2,1,0]返回一个列表,而不是 ndarray .所以,表达式 ar == 8返回标量 False ,因为列表和标量类型之间的所有比较都返回 False .因此,np.where(False)返回一个空数组。解决这个问题的方法是:

arr = np.array([3,1,4,8,2,1,0])
np.where(arr == 8)

这将返回 (array([3]),) .有可能进一步混淆,因为 where返回一个元组。如果您编写了一个打算访问索引位置(在本例中为 3)的脚本,您需要 np.where(arr == 8)[0]从元组中提取第一个(也是唯一一个)结果。要实际获得值 3,您需要 np.where(arr == 8)[0][0] (尽管如果数组中没有 8,这将引发 IndexError)。

这是一个例子,其中像 Matlab 或 Octave 这样的数字专用语言更易于新手使用,因为该语言不太通用,因此需要理解的返回类型较少。

关于arrays - 在一维数组上使用 numpy_where,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27096479/

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