组合方差的矢量化计算

时间:2015-10-17 13:33:57

标签: python numpy statistics vectorization

给定 n X m 矩阵,条目 x i,j compositional variance m X m 矩阵, i,j 条目包括表达式

Σ k = 1 n [ln 2 (x k,i / x < sub> 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

1 个答案:

答案 0 :(得分:1)

假设您在NumPy术语中指的是(np.log(x[k, i] / x[k, j])**2),对于k = 1:n进行总结,可以使用broadcasting建议一种向量化方法 -

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