首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将3个数组相乘,形成具有相乘条目的3D数组

将3个数组相乘,形成具有相乘条目的3D数组
EN

Stack Overflow用户
提问于 2020-09-19 19:10:51
回答 1查看 58关注 0票数 2

假设我们有三个一维数组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版本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-19 19:30:51

看看numpy broadcasting吧。通过理解这些概念,您可以解决有关多维数组的大多数问题:

代码语言:javascript
复制
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可能也会让你感兴趣:

代码语言:javascript
复制
res = np.einsum('n, m, k -> nmk', a, b, c)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63968080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档