首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过将两个2-D矩阵的向量相乘来创建3-D数组

如何通过将两个2-D矩阵的向量相乘来创建3-D数组
EN

Stack Overflow用户
提问于 2018-03-11 01:53:06
回答 1查看 47关注 0票数 0

我有两个2-D矩阵,它们有一个共享轴。我希望得到一个3-D数组,该数组包含每个矩阵沿共享轴向量的所有组合之间进行的每个成对乘法的结果。实现这一目标的最佳方法是什么?(假设矩阵很大)

举个例子,假设我有100名技术人员和1000名客户。对于这些人中的每一个,我都有一个一维数组,其中1和0表示他们在一周中的每一天的可用性。这是为技术人员提供的7x100矩阵,为客户提供的7x1000矩阵。

代码语言:javascript
复制
import numpy as np

technicians = np.random.randint(low=0,high=2,size=(7,100))
customers = np.random.randint(low=0,high=2,size=(7,1000))
result = solution(technicians, customers)
result.shape  # (7,100,1000)

我想为每一位技术人员和客户找出他们都有空的日子。如果我在技术人员可用性和客户可用性的每个组合之间执行成对乘法,我就会得到一个一维数组,显示每对夫妇在这些日子里是否都有空。它们共同创建了我想要的3D数组,形状类似于7x100x1000。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-03-11 06:25:44

试一试

代码语言:javascript
复制
ans = technicians.reshape((7, 1, 100)) * customers.reshape((7, 1000, 1))

我们使用numpy.broadcasting

通用广播规则:当操作两个数组时,NumPy会逐个元素地比较它们的形状。它从尾部维度开始,然后向前发展。当时,二维是兼容的

(1)它们相等,或(2)它们中的一个等于1

现在,我们将technicianscustomers的形状匹配为

代码语言:javascript
复制
technician       : 7 x 1    x 100
customers        : 7 x 1000 x 1
Result (3d array): 7 x 1000 x 100

使用reshape。然后,我们可以使用*应用元素乘法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49212198

复制
相关文章

相似问题

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