2
我有一個2d numpy矩陣,並且想要計算以下測試統計量。numpy矩陣中的絕對非對角線差異總和
我有蠻力代碼來做到這一點,但它似乎應該有一個更一般的numpy的解決方案,對於任何二維矩陣,利用工作之類的東西np.diag()
。我無法弄清楚。
def bruteforce(m):
s = 0.0
for (i,j) in itertools.product(range(0,m.shape[0]),range(0,m.shape[0])):
if i<j:
n = (m[i,j]-m[j,i])**2
d = m[i,j]+m[j,i]
if float(d) != 0.:
s = s+(float(n)/float(d))
else:
return('NA')
return(s)
在這種情況下,m
是整數的N×N矩陣。有沒有辦法做到這一點矢量numpy,避免這樣的暴力循環?
像魔術一樣。但它絕對有道理。謝謝。 – roblanf
不客氣:) –
認爲你需要'nansum'來避免'm'帶'0'值。 – Divakar