4

numpy 配列 P(N)、D(N、N) が与えられた場合、配列 A(N) を計算したい:

A_i = SUM(P_i - P_j) where j is such that D[i][j] is True
A_i = 0 otherwise

そう、

A_i = N*P_i - (P_m + P_n+...) where D[i][m], D[i][n],... are all True

二重ループと enumerate() を使用して上記を記述できますが、かなり遅いです。numpy ufuncs の観点からこれをどのように記述できるか疑問に思っています。

4

1 に答える 1

6

私が質問を正しく理解していれば、これがそれを行う1つの方法です。

A = P*D.sum(axis=1)-D.dot(P)
于 2013-07-23T04:18:33.367 に答える