Numpy -如何为协方差进行以下循环



我问了一个类似的问题,这个Numpy -两个矩阵行之间的协方差,但在这种情况下,我对最有效的方法不感兴趣,而只是用一些Numpy函数重写for循环。是否可以使用numpy转换以下代码,而不使用for循环?提前感谢

代码:

m1 = np.array([[1,2,3],[2,2,2]])
m2 = np.array([[2.56, 2.89, 3.76],[1,2,3.95]])
output = []
for a,b in zip(m1,m2):
cov = np.cov(a, b)
output.append(cov[0][1])
print(output)

试一下

mycov = np.cov(m1, m2)
output = mycov.diagonal(offset=m1.shape[0])

直接取相关的和可以避免计算任何额外的元素:

print(((m1 - m1.mean(1, keepdims=True)) * (m2 - m2.mean(1, keepdims=True))).sum(1) / (m1.shape[1] - 1))

它只是对应的去均值向量乘在一起,求和,并由n-1归一化的乘积

最新更新