给定一个包含条目 xi, j 的 n 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/