python - Numpy 找到两个二维 ndarray 的协方差

标签 python numpy

我是 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/

相关文章:

python - 有没有一种方法可以调整 NumPy 数组的大小/形状,从而保留每行的 sum()

python - 为什么在使用 imshow 显示时使用 np.hstack 对图像进行零填充会使图像变白?

python-2.7 - 值错误 : cannot copy sequence with size 5 to array axis with dimension 2

python - 在 Docker Alpine 上安装 numpy

Python 对象矩阵 - 定义属性

python - Python3中一串非英文字符的正确长度

python - 仅将字符串拆分为两部分

python - 是否可以在 python 中创建图排列?

python - 在 sklearn.preprocessing 模块中,我得到 ValueError : Found array with 0 feature(s)

python - 如何获取 scikit-learn SVM 分类器的所有 alpha 值?