私は次の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]])
Python以下のコードは私の質問に答えます:
np.array([1 + np.sum(row[range(k)] < row[k]) for row in tmp])
ここでtmpは2D配列であり、kは変数でした列比較用に設定します。
>>> which = lambda lst:list(np.where(lst)[0]) 例: >>> lst = map(lambda x:x <5、range(10)) >>> lst [真、真、真、真、真、偽、偽、偽、偽、偽] >>> which(lst) [0、1、2、3、4]
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