python - 成分方差的矢量化计算

标签 python numpy statistics vectorization

给定一个包含条目 xi, jn X m 矩阵,compositional variance是一个 m X m 矩阵,其中 i, j 条目包括表达式

Σk = 1n [ ln2(xk, i/x<子>k, j)]

(它包括其他易于计算的表达式)。

这很容易在循环中计算,但是如何使用矢量化来计算呢?

<小时/>

这是蹩脚的循环代码:

x = np.array([[1, 2, 3], [4, 5, 6]], dtype=float)

v = np.zeros((3, 3))

for i in range(3):
    for j in range(3):
        for k in range(2):
            v[i, j] += np.log(x[k, i] / x[k, j])**2

最佳答案

假设您的意思是 NumPy 术语中的 (np.log(x[k, i]/x[k, j])**2) 之类的内容,求和为 k = 1:n,可以使用 broadcasting 建议一种矢量化方法-

((np.log(x[:,:,None]/x[:,None])**2)).sum(0)

关于python - 成分方差的矢量化计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33187234/

相关文章:

java - 计算最小化另一个函数的正常函数的反函数

r - 如何在 R 的条形图中对 X 轴进行排序?

java - 许可证 key 生成器冲突概率

python - 使用 f2py 将 0 长度数组从 fortran 返回到 python

python - NLOPT 无效参数 Python

python - 展平 numpy 数组

python - cv.cvtColor(img, cv.COLOR_BGR2GRAY) 不起作用

python - 使用 numpy.round 时出现 `AttributeError: rint`

python - 使用 Python 覆盖属性

python - 当图像是表格时,是否可以更改图像的部分背景颜色?