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 の観点からこれをどのように記述できるか疑問に思っています。