问题描述
给定具有条目x i,j的n 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
1楼
假设您用NumPy表示(np.log(x[k, i] / x[k, j])**2)
,对于k = 1:n
求和,则可以建议一种矢量化方法进行 -
((np.log(x[:,:,None]/x[:,None])**2)).sum(0)