【发布时间】:2018-12-02 08:00:10
【问题描述】:
我怎样才能得到一个 numpy 数组的排序索引(距离),只考虑来自另一个 numpy 数组(val)的某些索引。
例如,考虑下面的两个 numpy 数组 val 和 distance:
val = np.array([[10, 0, 0, 0, 0],
[0, 0, 10, 0, 10],
[0, 10, 10, 0, 0],
[0, 0, 0, 10, 0],
[0, 0, 0, 0, 0]])
distance = np.array([[4, 3, 2, 3, 4],
[3, 2, 1, 2, 3],
[2, 1, 0, 1, 2],
[3, 2, 1, 2, 3],
[4, 3, 2, 3, 4]])
val == 10 的距离是 4、1、3、1、0、2。我想让这些排序为 0、1、1、2、3、4 并从距离返回相应的索引大批。
返回类似:
(array([2, 1, 2, 3, 1, 0], dtype=int64), array([2, 2, 1, 3, 4, 0], dtype=int64))
或:
(array([2, 2, 1, 3, 1, 0], dtype=int64), array([2, 1, 2, 3, 4, 0], dtype=int64))
因为第二个和第三个元素的距离都是'1',所以我猜索引可以互换。
尝试使用 np.where, np.argsort, np.argpartition, np.unravel_index 的组合,但似乎无法正常工作
【问题讨论】:
-
那么最终的预期输出是什么?
-
Divakar,我更新了问题。 Yakym,只返回距离(它的值)而不是索引