我想在数组本身内的一维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))
答案 0 :(得分: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,因此所有索引都被翻转了。
答案 1 :(得分:0)
这将为您提供所需的输出:
np.where(a==b)[0][0]
答案 2 :(得分:0)
NumPy的where()函数可以实现您想要的功能,如其他答案所述。如果只有一维数组,并且只希望a
中第一个元素的索引等于b
,则where()
既笨拙又效率低下。相反,您可以使用
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])