9

find(A>9,1)numpy/scipyのmatlabからの同等の機能はありますか? numpyに関数があることは知っていますが、nonzero必要なのは最初のインデックスです。これにより、別の抽出された列で最初のインデックスを使用できるようになります。

例: matlab でA = [ 1 2 3 9 6 4 3 10 ] find(A>9,1)インデックスを返す4

4

5 に答える 5

7

findnumpy に相当するのは ですnonzeroが、2 番目のパラメーターはサポートされていません。しかし、あなたが探している動作を得るために、このようなことをすることができます.

B = nonzero(A >= 9)[0] 

しかし、探しているのが条件を満たす最初の要素を見つけることだけである場合は、 を使用する方が適切ですmax

たとえば、matlab では、find(A >= 9, 1)と同じになり[~, idx] = max(A >= 9)ます。numpy の同等の関数は次のようになります。

idx = (A >= 9).argmax()
于 2013-01-17T22:08:58.033 に答える
2

matlab のものは、Pythonのfind(X, K)ものとほぼ同等です。numpy.nonzero(X)[0][:K]@Pavan の argmax メソッドは、おそらく適切なオプションですK == 1が、A >= 9 に値があることをアプリオリに知っていない限り、おそらく次のようなことを行う必要があります。

idx = (A >= 9).argmax()
if (idx == 0) and (A[0] < 9):
    # No value in A is >= 9
    ...
于 2013-01-17T22:13:19.163 に答える