在 numpy 数组中搜索元素的索引
Posted
技术标签:
【中文标题】在 numpy 数组中搜索元素的索引【英文标题】:Searching an element's index in a numpy array 【发布时间】:2016-05-24 08:51:06 【问题描述】:我有一个“距离”numpy 数组。我想找到一个元素的索引。我使用了numpy.where
条件,但它没有返回索引。相反,它只是返回具有空数组的元素的类型,如下所示:
(array([], dtype=int64),)
我应该怎么做才能获取元素的索引?请帮忙。谢谢。
这是我的代码:
distances = distances_query_training(features_train, features_test[2])
print min(distances)
print type(distances)
pos = np.where(distances == 0.03471681)
print pos
以下是输出:
0.0347168063061
(array([], dtype=int64),)
【问题讨论】:
【参考方案1】:您需要所有紧密的元素还是只需要最匹配的元素? 我通常会做这样的事情来获得一个值的最接近的索引
def nearest_arg(array, value):
idx = (np.abs(array - value)).argmin()
return idx
【讨论】:
我需要一个最匹配的。而且您的功能非常有效。谢谢您的帮助。 :-)【参考方案2】:不要使用等于浮点值,使用isclose()
:
import numpy as np
np.random.seed(1)
a = np.random.rand(1000)
np.where(np.isclose(a, 0.3, atol=1e-4))
【讨论】:
以上是关于在 numpy 数组中搜索元素的索引的主要内容,如果未能解决你的问题,请参考以下文章