7

任意に多くのnanおよび/またはinf値を持つ可能性のあるnumpy配列から10個の最小の実数値を見つけるための優れた迅速な方法が必要です。

値自体ではなく、これらの最小の実数値のインデックスを特定する必要があります。

numpy からargminand関数を見つけました。nanargminたとえば、最小の100個の値が必要なように、複数の値を指定したいので、実際には仕事を成し遂げていません。-infまた、配列に存在する場合、どちらも最小値として値を返します。

heapq.nsmallest動作しますがnan-inf値も最小値として返します。また、探しているインデックスが表示されません。

ここで何か助けていただければ幸いです。

4

3 に答える 3

11

これを捨てるべき唯一の値は、負の無限のものです。だから試してください:

import numpy as np
a = np.random.rand(20)
a[4] = -np.inf
k = 10
a[np.isneginf(a)] = inf
result = a[np.argsort(a)[:k]]
于 2013-04-24T13:35:24.580 に答える
1

次のようなインデックスinfを見つけることができます。Nan

a=np.array([[12,12,111],[np.inf,np.inf,1,2,3],[np.nan,7,8]])

aループして次の方法で確認できます。

for item in a:    
    idxInf=(np.isnan(a[item])).nonzero()
    idxNan=(np.isnan(a[item])).nonzero()

すなわち:

In [17]: (np.isnan(a[2]))
Out[17]: array([ True, False, False], dtype=bool)

In [18]: (np.isnan(a[2])).nonzero()
Out[18]: (array([0]),)
于 2013-04-24T13:41:20.910 に答える