首页 > 解决方案 > 如何从numpy数组返回索引

问题描述

我有一个包含 10 个值的数组 (x),以及另一个包含 100 个值的数组 (y)。x 中的 8 个值包含在 y 中,x 中有 2 个值不在 y 中。

我想要做的是计算 y 中的每个值与 x 中的每个值之间的距离并返回最小值。然后将 y 中的最接近的值返回到 x 中的值并绘制它们并绘制它们。

这是我到目前为止所得到的一个例子......

x = np.array([1,2,3,4,5,6,7,1100,1200,10])
y = np.linspace(0, 100, 100)

D = spatial.distance_matrix(x.reshape(-1,1), y.reshape(-1,1))

min = np.min(D, axis=1)

我现在如何返回与 min 中的值相对应的 y 中的值的数组?

我想做的是有一个数组 z 等于用于在 np.min(D, axis=1) 中最小化的最佳 y 值,并以与 x 相同的顺序排列,这样我就可以执行以下操作

plt.scatter(x,z)

并比较找到的所有值的匹配程度。

谢谢!

标签: pythonnumpy

解决方案


对于搜索索引:

arr = np.array([1,2,3,4,5,6,7,8])
val = np.array([3,7,5,3])
index = [arr.tolist().index(i) for i in val]
index

但在您的情况下,它会引发错误,因为找不到匹配的值。


推荐阅读