如何返回numpy数组的索引?

时间:2017-05-11 16:22:23

标签: python arrays numpy

我有一个用于完成最近邻居计算的numpy数组:

def all_distance_compute(matrix, vector):
    diff = matrix[0:] - matrix[vector]
    distances = np.sqrt(np.sum(diff**2, axis=1))

    for i in range(len(distances)):        
        print i
        print distances[i]
return  distances

它似乎是基于返回的结果距离而工作,但是,我不知道如何查看距离中的所有值并返回数组中哪个元素是最小值。

我在我的函数中使用的for循环纯粹用于诊断,但我认为我可以通过这种方式迭代,也许确定这种方式的最小值,但我也认为numpy可能有更好的方法来做到这一点。 编辑: 所以当我输入问题时,我想我会尝试迭代找到最小值的建议,并且我将我的功能改为: code

for i in range(len(distances)):
        if distances[i] < min and distances[i] > 0:
            min = distances[i]
            mindex = i

return  min, mindex

1 个答案:

答案 0 :(得分:1)

numpy.argsort将返回按升序排序的数组索引。

例如:

In [1]: import numpy as np

In [2]: arr = np.array([5,3,8,2,1,9])

In [3]: np.argsort(arr)
Out [3]: array([4, 3, 1, 0, 2, 5])

In [4]: arr[np.argsort(arr)]
Out [4]: array([1, 2, 3, 5, 8, 9])