在 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 数组中搜索元素的索引的主要内容,如果未能解决你的问题,请参考以下文章

如何在Python中搜索Numpy数组中的数字

numpy数组的排序,搜索,元素抽取

Numpy Array 获取按行搜索的行索引

给定一个 numpy 数组视图中项目的索引,在基本数组中找到它的索引

c ++:搜索数组

NumPy数组中元素的索引[重复]