如何通过将两个二维矩阵的向量相乘来创建三维数组

时间:2018-03-10 17:53:06

标签: numpy numpy-broadcasting

我有两个具有共享轴的二维矩阵。 我想得到一个3-D数组,它保存了沿着共享轴的每个矩阵的矢量的所有组合之间的每个成对乘法的结果。 实现这一目标的最佳方法是什么? (假设矩阵很大)

作为一个例子,我们说我有100名技术人员和1000名客户。 对于这些人中的每一个,我都有一个1-D阵列,其中1和0代表他们在一周中的每一天的可用性。 这是技术人员的7x100矩阵,为客户提供7x1000矩阵。

MessagingCenter.Subscribe<Object, string> (this, "ParsedSmsReceived",
(sender, arg) => 
{ 
    string message = arg; 
});

我想为每位技术人员 - 客户夫妇找到他们可用的日子。 如果我在技术人员可用性和客户可用性的每个组合之间执行成对乘法,我会得到一个1-D阵列,显示每个人在这些天是否都可用。他们一起创建了我想要的3-D阵列,形成了像7x100x1000这样的东西。

谢谢!

1 个答案:

答案 0 :(得分:1)

尝试

ans = technicians.reshape((7, 1, 100)) * customers.reshape((7, 1000, 1))

我们使用numpy.broadcasting

  

一般广播规则:在两个阵列上运行时,NumPy   比较他们的形状元素。它从尾随开始   尺寸,并向前发展。 两个维度兼容   当

     

(1)它们是相等的,或者(2)其中一个是1

现在,我们将technicianscustomers的形状与

相匹配
technician       : 7 x 1    x 100
customers        : 7 x 1000 x 1
Result (3d array): 7 x 1000 x 100

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