在具有相同值的1D NumPy数组中查找值的索引/位置

11 浏览
0 Comments

在具有相同值的1D NumPy数组中查找值的索引/位置

我想在一个1D 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
0 Comments

NumPy的where()函数可以实现你想要的功能,如其他答案所述。如果你只有一维数组,并且只想要找到第一个等于b的元素在a中的索引,使用where()函数既笨拙又低效。相反,你可以使用以下方法:

import numpy as np
a = np.linspace(1, 10, 10)  # 提示:np.array()是多余的
b = np.random.choice(a)
index = next(i for i, el in enumerate(a) if el == b)
print(index, a[index])

以上代码会找到数组a中第一个等于b的元素的索引,并将索引和对应的元素值打印出来。

问题的出现原因是,在1D NumPy数组中查找特定值的索引或位置是一个常见的需求。然而,NumPy的where()函数在处理这种情况时既笨拙又低效。因此,需要找到一种更简洁高效的解决方法。

解决方法是使用enumerate()函数来遍历数组a中的元素,并通过比较元素的值与目标值b来找到匹配的索引。通过使用next()函数和生成器表达式,可以找到第一个匹配的索引。最后,将找到的索引和对应的元素值打印出来,以满足需求。

通过上述方法,我们可以更简洁高效地找到1D NumPy数组中特定值的索引或位置。

0
0 Comments

问题出现的原因:在一个一维NumPy数组中查找特定值的索引或位置。

解决方法:使用np.where函数来实现。具体的代码如下所示:

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

这行代码的作用是先使用a==b来判断数组a中哪些元素与变量b的值相等,然后np.where函数会返回满足条件的元素的索引组成的数组。由于我们只关心第一个满足条件的索引,所以通过[0][0]的方式来获取。最终得到的结果就是我们要找的特定值在一维NumPy数组中的索引或位置。

这种方法非常简洁高效,能够很方便地找到特定值在一维NumPy数组中的索引或位置。

0
0 Comments

在这个问题中,用户想要找到一个一维NumPy数组中特定值的索引或位置。他们尝试了使用where函数来实现这一目标,但遇到了一个问题:当数组中的值都相同时,where函数会返回所有位置的索引,而不是只返回随机选择值的索引。

为了解决这个问题,用户询问是否有一种方法可以只返回包含随机选择值的索引。然而,其他用户表示不理解用户的意图。

最后,提供的解决方案是使用where函数来查找特定值的索引。尽管这个方法无法解决数组中所有值相同的情况,但对于随机选择的值仍然有效。

以下是一个示例代码,演示如何使用where函数来查找特定值的索引:

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

这段代码会输出随机选择值在数组中的索引。

总之,通过使用where函数,可以在一维NumPy数组中找到特定值的索引或位置。但是,对于所有值都相同的情况,这种方法无法正常工作。

0