web-dev-qa-db-ja.com

Python Rのwhich()と同等

私は次のRステートメントを取得し、NumPyを使用してPythonに変換しようとしています:

1 + apply(tmp,1,function(x) length(which(x[1:k] < x[k+1])))

Python which()と同等)はありますか?ここで、xは行列の行ですtmp、およびk =は、別の行列の列数に対応します。

以前、私は次のPythonコードを試してみましたが、値エラーを受け取りました(オペランドは形状と一緒にブロードキャストできませんでした):

for row in tmp:
        print np.where(tmp[tmp[:,range(k)] < tmp[:,k]])
27
Bokononisms

Python以下のコードは私の質問に答えます:

np.array([1 + np.sum(row[range(k)] < row[k]) for row in tmp])

ここでtmpは2D配列であり、kは変数でした列比較用に設定します。

https://stackoverflow.com/users/601095/doboy に感謝します。

4
Bokononisms
 >>> which = lambda lst:list(np.where(lst)[0])
 
例:
 >>> lst = map(lambda x:x <5、range(10))
 >>> lst 
 [真、真、真、真、真、偽、偽、偽、偽、偽] 
 >>> which(lst)
 [0、1、2、3、4] 
4
Vishal Mishra

http://effbot.org/zone/python-list.htm から:

一致するすべてのアイテムのインデックスを取得するには、ループを使用して、開始インデックスを渡すことができます。

i = -1
try:
    while 1:
        i = L.index(value, i+1)
        print "match at", i
except ValueError:
    pass
1