find(A>9,1)
numpy/scipyのmatlabからの同等の機能はありますか? numpyに関数があることは知っていますが、nonzero
必要なのは最初のインデックスです。これにより、別の抽出された列で最初のインデックスを使用できるようになります。
例: matlab でA = [ 1 2 3 9 6 4 3 10 ]
find(A>9,1)
インデックスを返す4
find
numpy に相当するのは ですnonzero
が、2 番目のパラメーターはサポートされていません。しかし、あなたが探している動作を得るために、このようなことをすることができます.
B = nonzero(A >= 9)[0]
しかし、探しているのが条件を満たす最初の要素を見つけることだけである場合は、 を使用する方が適切ですmax
。
たとえば、matlab では、find(A >= 9, 1)
と同じになり[~, idx] = max(A >= 9)
ます。numpy の同等の関数は次のようになります。
idx = (A >= 9).argmax()
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
...