在具有相同值的1D NumPy数组中查找值的索引/位置
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数组中特定值的索引或位置。
在这个问题中,用户想要找到一个一维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数组中找到特定值的索引或位置。但是,对于所有值都相同的情况,这种方法无法正常工作。