python - Numpy - 两个矩阵的行之间的协方差

标签 python numpy matrix covariance

我需要计算两个不同矩阵的每一行之间的协方差,即第一个矩阵的第一行与第二个矩阵的第一行之间的协方差,依此类推,直到两个矩阵的最后一行。我可以在没有 NumPy 的情况下使用下面附加的代码来完成此操作,我的问题是:是否可以避免使用“for 循环”并使用 NumPy 获得相同的结果?

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)

提前致谢!

最佳答案

如果你正在处理大数组,我会考虑这个:

from numba import jit
import numpy as np


m1 = np.random.rand(10000, 3)
m2 = np.random.rand(10000, 3)

@jit(nopython=True) 
def nb_cov(a, b): 
    return [np.cov(x)[0,1] for x in np.stack((a, b), axis=1)]

获取运行时间

>>> %timeit nb_cov(m1, m2)
The slowest run took 94.24 times longer than the fastest. This could mean that an intermediate result is being cached.
1 loop, best of 5: 10.5 ms per loop

比较

>>> %timeit [np.cov(x)[0,1] for x in np.stack((m1, m2), axis=1)]
1 loop, best of 5: 410 ms per loop  

关于python - Numpy - 两个矩阵的行之间的协方差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69236194/

相关文章:

python - cygdb导入错误: No module named 'Cython'

java - 将图像转换为矩阵

python - 使用较低暗淡的索引数组索引 numpy 数组会产生比两者都更高暗淡的数组

python - python 中的矩阵矩阵

python - 来自嵌套单词列表的共现矩阵

c++ - 如何在 OpenCV 函数中访问多维矩阵的子矩阵?

Python:如何在前 10 个值的列表中找到最大值?

python - 如何导入和/或引用与内置 Python 名称同名的用户定义模块

python - 如何从 lldb python API 访问 C 数组浮点值

python - 将包含日期时间对象的元组转换为 numpy 结构化数组时出现 `TypeError: float() argument must be a string or a number`