numpy:在两组之间找到二维数组中第k个最大或最小的数组

尼古拉斯·H

假设我得到了5个地方(例如[0,1,2,3,4]之类的地方)之间的距离矩阵,它是5 \ times 5 2D数组

f = np.array([[  0.        ,  67.72689426, 260.42493099, 228.21915948,
    234.46787035],
   [ 67.72689426,   0.        , 204.04482377, 165.98264605,
    166.7409761 ],
   [260.42493099, 204.04482377,   0.        ,  38.06217772,
     41.69615233],
   [228.21915948, 165.98264605,  38.06217772,   0.        ,
     11.32050776],
   [234.46787035, 166.7409761 ,  41.69615233,  11.32050776,
      0.        ]])

如果我们知道有三个集合,例如{0},{1,2},{3,4},那么我们如何找到集合之间的第k个最大值或第k个最小值。

例如,集合{0}和{1,2}之间的最大值为260.42493099。

音调

这是一个基于NumPyix_的完全矢量化的解决方案unique

def kth_extreme(arr, ind1, ind2, k=1, ascending=True):
    values = np.unique(arr[np.ix_(ind1, ind2)])
    return values[k-1] if ascending else values[-k]

笔记:

  • 要获得最大(或最小)值,您必须k=1在函数调用中使用(默认值)。对于第二大(或最小)的对象,您必须传递k=2,依此类推。
  • 在输入数组的选定条目子集中可能存在重复值arr上面的解决方案将重复值视为单个值。如果您希望考虑多个值,则应更改np.unique(arr[np.ix_(ind1, ind2)])np.sort(np.ravel(arr[np.ix_(ind1, ind2)]))

演示版

In [1152]: f
Out[1152]: 
array([[  0.        ,  67.72689426, 260.42493099, 228.21915948, 234.46787035],
       [ 67.72689426,   0.        , 204.04482377, 165.98264605, 166.7409761 ],
       [260.42493099, 204.04482377,   0.        ,  38.06217772,  41.69615233],
       [228.21915948, 165.98264605,  38.06217772,   0.        ,  11.32050776],
       [234.46787035, 166.7409761 ,  41.69615233,  11.32050776,   0.        ]])

In [1153]: kth_extreme(f, [0], [1, 2], ascending=False) # largest
Out[1153]: 260.42493099

In [1154]: kth_extreme(f, [0], [1, 2]) # smallest
Out[1154]: 67.72689426

In [1155]: kth_extreme(f, [1, 2], [3, 4], k=2) # second smallest
Out[1155]: 41.69615233

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从python中的两个变量数组制作二维数组?

来自分类Dev

numpy的,我如何找到一个二维数组中的总行和一个一维数组中的总列

来自分类Dev

有效地找到两个二维numpy数组的行相交

来自分类Dev

快速找到二维数组中的多个最大值

来自分类Dev

二维char数组递归搜索最大的组

来自分类Dev

numpy的二维数组最大/最大

来自分类Dev

在二维数组中查找最小值/最大值

来自分类Dev

如何获得两个二维数组之间的交集?

来自分类Dev

有什么功能可以找到二维数组中的第二个最小值或最大值?

来自分类Dev

二维numpy数组中的阈值

来自分类Dev

二维数组中从最大到最小的最长路径

来自分类Dev

在Python 3中,如何在二维numpy数组中交换两个子数组?

来自分类Dev

Python Numpy获得2个二维数组之间的差异

来自分类Dev

在二维numpy数组的每一行中找到N个最大值

来自分类Dev

如何找到二维数组中两个坐标之间的最短路径?

来自分类Dev

如何从python中的两个变量数组制作二维数组?

来自分类Dev

有效地找到两个二维numpy数组的行相交

来自分类Dev

快速找到二维数组中的多个最大值

来自分类Dev

难以找到二维数组中每一列的最大值

来自分类Dev

查找二维数组中两个对象之间的距离,而不是对角线

来自分类Dev

在JavaScript中从二维数组获取最小值和最大值

来自分类Dev

快速找到二维数组中的最大元素

来自分类Dev

在Python 3中,如何在二维numpy数组中交换两个子数组?

来自分类Dev

如何在Java中获取二维数组列表的最大值/最小值

来自分类Dev

二维数组中的最大总和路径+双两个值以获得更好的分数

来自分类Dev

获取二维 numpy 数组中最大点的索引

来自分类Dev

比较 C 中的两个二维数组

来自分类Dev

如何从一维 numpy 数组和两个限制数组中获取切片区域的二维数组

来自分类Dev

用另一个二维数组中的列替换二维 numpy 数组中的列

Related 相关文章

  1. 1

    如何从python中的两个变量数组制作二维数组?

  2. 2

    numpy的,我如何找到一个二维数组中的总行和一个一维数组中的总列

  3. 3

    有效地找到两个二维numpy数组的行相交

  4. 4

    快速找到二维数组中的多个最大值

  5. 5

    二维char数组递归搜索最大的组

  6. 6

    numpy的二维数组最大/最大

  7. 7

    在二维数组中查找最小值/最大值

  8. 8

    如何获得两个二维数组之间的交集?

  9. 9

    有什么功能可以找到二维数组中的第二个最小值或最大值?

  10. 10

    二维numpy数组中的阈值

  11. 11

    二维数组中从最大到最小的最长路径

  12. 12

    在Python 3中,如何在二维numpy数组中交换两个子数组?

  13. 13

    Python Numpy获得2个二维数组之间的差异

  14. 14

    在二维numpy数组的每一行中找到N个最大值

  15. 15

    如何找到二维数组中两个坐标之间的最短路径?

  16. 16

    如何从python中的两个变量数组制作二维数组?

  17. 17

    有效地找到两个二维numpy数组的行相交

  18. 18

    快速找到二维数组中的多个最大值

  19. 19

    难以找到二维数组中每一列的最大值

  20. 20

    查找二维数组中两个对象之间的距离,而不是对角线

  21. 21

    在JavaScript中从二维数组获取最小值和最大值

  22. 22

    快速找到二维数组中的最大元素

  23. 23

    在Python 3中,如何在二维numpy数组中交换两个子数组?

  24. 24

    如何在Java中获取二维数组列表的最大值/最小值

  25. 25

    二维数组中的最大总和路径+双两个值以获得更好的分数

  26. 26

    获取二维 numpy 数组中最大点的索引

  27. 27

    比较 C 中的两个二维数组

  28. 28

    如何从一维 numpy 数组和两个限制数组中获取切片区域的二维数组

  29. 29

    用另一个二维数组中的列替换二维 numpy 数组中的列

热门标签

归档