当前位置: 代码迷 >> python >> 成分方差的矢量化计算
  详细解决方案

成分方差的矢量化计算

热度:133   发布时间:2023-06-13 13:40:03.0

给定具有条目x i,jn X m矩阵,则为m X m矩阵,其中i,j条目包括表达式

k = 1 n [ln 2 (x k,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求和,则可以建议一种矢量化方法进行 -

((np.log(x[:,:,None]/x[:,None])**2)).sum(0)
  相关解决方案