我有两个2-D矩阵,它们有一个共享轴。我希望得到一个3-D数组,该数组包含每个矩阵沿共享轴向量的所有组合之间进行的每个成对乘法的结果。实现这一目标的最佳方法是什么?(假设矩阵很大)
举个例子,假设我有100名技术人员和1000名客户。对于这些人中的每一个,我都有一个一维数组,其中1和0表示他们在一周中的每一天的可用性。这是为技术人员提供的7x100矩阵,为客户提供的7x1000矩阵。
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。
谢谢!
发布于 2018-03-11 06:25:44
试一试
ans = technicians.reshape((7, 1, 100)) * customers.reshape((7, 1000, 1))我们使用numpy.broadcasting。
通用广播规则:当操作两个数组时,NumPy会逐个元素地比较它们的形状。它从尾部维度开始,然后向前发展。当时,二维是兼容的
(1)它们相等,或(2)它们中的一个等于1
现在,我们将technicians和customers的形状匹配为
technician : 7 x 1 x 100
customers : 7 x 1000 x 1
Result (3d array): 7 x 1000 x 100使用reshape。然后,我们可以使用*应用元素乘法。
https://stackoverflow.com/questions/49212198
复制相似问题