假设我们有三个一维数组A (m个元素),B (n个元素)和C (k个元素)。
有没有python numpy函数可以将上面的内容作为输入,并输出一个3D矩阵(维度:m x n x k),由此索引i,j,k的每个条目都具有值Ai * Bj * Ck?
np.outer(A,B)适用于2D版本,但我正在寻找3D版本。
发布于 2020-09-19 19:30:51
看看numpy broadcasting吧。通过理解这些概念,您可以解决有关多维数组的大多数问题:
import numpy as np
n, m, k = 13, 17, 19
a = np.random.random(n)
b = np.random.random(m)
c = np.random.random(k)
res = (a[ :, np.newaxis, np.newaxis] * # (n, 1, 1)
b[np.newaxis, :, np.newaxis] * # * (1, m, 1)
c[np.newaxis, np.newaxis, :]) # * (1, 1, k)
# = (n, m, k)
print(res.shape)
# (13, 17, 19)如果你熟悉爱因斯坦求和约定,einsum可能也会让你感兴趣:
res = np.einsum('n, m, k -> nmk', a, b, c)https://stackoverflow.com/questions/63968080
复制相似问题