【发布时间】:2021-11-04 13:24:00
【问题描述】:
我正在寻找以下计算的矢量化形式:
import numpy as np
D = 100
N = 1000
K = 10
X = np.random.uniform(0, 1, (K, N))
T = np.random.uniform(0, 1000, (D, N))
out = np.zeros((D, K))
for i in range(D):
for j in range(K):
out[i, j] = np.prod(X[j, :] ** T[i, :])
我尝试过一些 einsum 风格的东西,但是 np.prod 的存在让我有点失望。
编辑:减小矩阵的大小。
【问题讨论】:
-
你能举一个更简单的例子吗?我没有 80GB 的内存。
-
您的代码对我来说只是全零。这些是实际输入吗?
-
没关系;只要表达正确。最小的例子是功能,而不是实用程序(我不能在这里上传我的原始矩阵)
-
看起来你可能想要
(X ** T[:, None]).prod(-1) -
@user3483203。您可以在不损害概念的情况下减小任何尺寸...
标签: python numpy vectorization