我是 numpy 的新手并且被困在这个问题上。 我有两个二维 numpy 数组,例如
x = numpy.random.random((10, 5))
y = numpy.random.random((10, 5))
我想使用 numpy cov
函数逐行查找这两个 ndarray 的协方差。即,对于上面的示例,输出数组应包含 10 个元素,每个元素表示 ndarrays 的相应行的协方差。我知道我可以通过遍历行并找到两个一维数组的协方差来做到这一点,但这不是 pythonic。
Edit1:两个数组的协方差表示在0, 1
索引处的元素。
Edit2:目前这是我的实现
s = numpy.empty((x.shape[0], 1))
for i in range(x.shape[0]):
s[i] = numpy.cov(x[i], y[i])[0][1]
最佳答案
使用协方差的定义:E(XY) - E(X)E(Y)
。
import numpy as np
x = np.random.random((10, 5))
y = np.random.random((10, 5))
n = x.shape[1]
cov_bias = np.mean(x * y, axis=1) - np.mean(x, axis=1) * np.mean(y, axis=1))
cov_bias * n / (n-1)
请注意,cov_bias
对应于 numpy.cov(bias=True)
的结果。
关于python - Numpy 找到两个二维 ndarray 的协方差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52198846/