如何获得numpy中的最大值索引但具有阈值?

时间:2016-05-20 19:35:20

标签: python numpy

我的代码

import numpy as np
from numpy import loadtxt

s = loadtxt("sest.txt", delimiter=" ", unpack=False)
b = loadtxt("base.txt", delimiter=" ", unpack=False)
d=b-s
e = np.absolute(d)
me = e.argsort()[-100:][::-1]
print me

我得到了

[400600 401600 399600 400601 401601 399601 401599 400599 399599 399602
 401602 400602 399598 401598 400598 400603 401603 399603 401597 399597
 401604 400597 399604 400604 400605 399605 401605 401596 399596 400596
 399606 401606 400606 399595 401595 400595 399607 401607 400607 400608
 400594 401608 399608 401594 399594 400609 401609 399609 401593 400593
 399593 401610 400610 399610 400592 401592 399592 399611 400611 401611
 399591 401612 401591 400612 400591 399612 399613 401613 400613 399590
 400590 401590 400614 399614 401614 399589 400589 401589 401615 399615
 400615 401616 399616 400616 400588 399588 401588 400617 401617 399617
 401587 400587 399587 400618 399618 401618 399586 400586 401586 400619]

工作正常。但我想指定d中大于2.5的所有元素吗?所以我不在乎是否有100或200只是高于此阈值水平的所有内容。是否可以扩展argsort?

1 个答案:

答案 0 :(得分:3)

如果您只是寻找超过某个阈值的数组元素,则可以使用x [x> a],其中a是阈值。为了便于说明,我现在将使用ipython进行演示并稍后进行编辑。让我们假设“x”是一些numpy数组:

  In [9]: x=np.random.rand(1,10)  # an array with random elements

  In [10]: print x[x>0.6]  # select elements above 0.6
    [ 0.71733906  0.74028607  0.66293195  0.86649922  0.7423685   0.71807904
     0.8215429 ]

  In [11]: print x
    [[ 0.36655557  0.71733906  0.74028607  0.66293195  0.86649922  0.21478604
     0.7423685   0.71807904  0.30482062  0.8215429 ]]