我有一个用于完成最近邻居计算的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
答案 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])