28

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

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

which() に相当する Python はありますか? ここで、xは行列tmpの行であり、kは別の行列の列数に対応します。

以前、次の Python コードを試したところ、Value Error (オペランドを形状と共にブロードキャストできませんでした) が返されました。

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

3 に答える 3

6
    >>> which = ラムダ lst:list(np.where(lst)[0])

    例:
    >>> lst = map(ラムダ x:x<5, range(10))
    >>>リスト
    [真、真、真、真、真、偽、偽、偽、偽、偽]
    >>> どれ(lst)
    [0, 1, 2, 3, 4]
于 2016-10-17T18:44:04.217 に答える
4

以下の Python コードが私の質問に答えます。

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

ここで、 tmpは 2 次元配列で、kは列比較用に設定された変数です。

答えを教えてくれたhttps://stackoverflow.com/users/601095/doboyに感謝します!

于 2012-08-31T16:40:35.157 に答える
1

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
于 2012-08-31T00:06:50.577 に答える