【发布时间】:2021-10-02 19:03:56
【问题描述】:
给定一个维度为 [m,m] 的二维 numpy 数组 X 和一个长度为 m 的一维数组 Y,我希望计算一个结果二维矩阵 P 也是维度 [m,m],其 [i,j] 元素是使用以下操作获得的:
P[i][j] = Y[i] * Y[j] * np.dot(X[i],X[j])
有没有比应用嵌套 for 循环更快的方法?
【问题讨论】:
给定一个维度为 [m,m] 的二维 numpy 数组 X 和一个长度为 m 的一维数组 Y,我希望计算一个结果二维矩阵 P 也是维度 [m,m],其 [i,j] 元素是使用以下操作获得的:
P[i][j] = Y[i] * Y[j] * np.dot(X[i],X[j])
有没有比应用嵌套 for 循环更快的方法?
【问题讨论】:
你可以使用:
P = Y*Y[:, None]*np.dot(X, X.T)
示例:
>>> X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> Y = np.array([10, 11, 12])
>>> P = Y*Y[:, None]*np.dot(X, X.T)
>>> P
array([[ 1400, 3520, 6000],
[ 3520, 9317, 16104],
[ 6000, 16104, 27936]])
【讨论】: