在 1D NumPy 数组中查找值的索引/位置(具有相同的值)[重复]

Posted

技术标签:

【中文标题】在 1D NumPy 数组中查找值的索引/位置(具有相同的值)[重复]【英文标题】:finding index/location of value in 1D NumPy array (with identical values) [duplicate] 【发布时间】:2020-03-08 04:45:15 【问题描述】:

我想在数组本身的一维 NumPy 数组中找到随机选择的数字的索引/位置,但是当我尝试以下操作时:

a = np.array(np.linspace(1,10,10))
b = np.random.choice(a)
print(a.index(b))

它不起作用,无法弄清楚问题出在哪里。有人有想法吗?

提前致谢!

编辑:如果 NumPy 数组中的值相同,如何仅索引随机选择的值,例如:

a = np.array(np.linspace(10,10,10))

【问题讨论】:

我不确定索引函数是否适用于数组,试试这个链接:***.com/questions/18079029/… 【参考方案1】:

您必须使用where 函数,因为这里已经回答Is there a NumPy function to return the first index of something in an array?

import numpy as np
a = np.array(np.linspace(1,10,10))
b = np.random.choice(a)
print(np.where(a==b))

如果值相同,where返回多个索引,例如:

a = np.array(np.linspace(10,10,10))
print(np.where(a==10))

>>> (array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),)

这里所有的索引都被翻转了,因为 10 在所有位置。

【讨论】:

成功了!谢谢!如果我不打扰您,另一个问题是:如果数组中的值相同怎么办?因为不幸的是,这种方法不能正常工作。 我明白了。谢谢!但是是否可以只索引 NumPy 数组中包含相同值的随机选择的值? (再次,抱歉打扰您) 我不明白你在做什么 很抱歉不清楚。我正在尝试在包含相同值的 NumPy 数组中索引随机选择的值的位置。 好吧,我写的代码也适用于随机值。【参考方案2】:

这将为您提供所需的输出:

np.where(a==b)[0][0]

【讨论】:

【参考方案3】:

NumPy 的 where() 函数可以满足您的需求,如其他答案中所述。如果你只有一维数组并且你只想要a 中第一个元素的索引等于bwhere() 既笨重又低效。相反,您可以使用

import numpy as np
a = np.linspace(1, 10, 10)  # Hint: the np.array() is superfluous
b = np.random.choice(a)
index = next(i for i, el in enumerate(a) if el == b)
print(index, a[index])

【讨论】:

以上是关于在 1D NumPy 数组中查找值的索引/位置(具有相同的值)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 numpy 数组中查找多个值的行索引

在 1D-NumPy 数组中查找奇异值/局部最大值/最小值集(再次)

两个 1D numpy / torch 数组的特殊索引以生成另一个数组

如何使用索引和值迭代 1d NumPy 数组 [重复]

Numpy学习二:数组的索引与切片

c#如何查找string数组的某一个值的索引