Python 如何返回numpy数组的索引?

Python 如何返回numpy数组的索引?,python,arrays,numpy,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 d

我有一个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可能有更好的方法来实现这一点。 编辑: 因此,当我输入问题时,我想我会尝试我的建议,迭代以找到最小值,我将我的函数更改为: 代码

将返回按升序排序的数组索引

例如:

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])

什么是向量?你能添加一个有代表性的案例吗?见上面的更新。谢谢!这也行得通。如果我做np.argsortdistances,我会得到与上面的mindex变量相同的结果。不过,numpy解决方案将至少快一个数量级。
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])