如何使用向量矩阵进行标量矩阵的逐元素乘法?

时间:2013-10-23 12:14:28

标签: python numpy

如何转换

形式的以下numpy数组A.
[[1,2]
 [3,4]]

进入表格B的

[[[1,1,1],[2,2,2]]
 [[3,3,3],[4,4,4]]]

这样我就可以用C

进行逐元素乘法
[[[ 5, 6, 7],[ 8, 9,10]]
 [[11,12,13],[13,15,16]]]

最初的问题是将标量乘以矢量,例如4 * [13,15,16]。但是我没有标量,而是有一个标量矩阵(A),而不是一个向量,我有一个向量矩阵(C)。如果有一种方法没有像B中那样实际复制值,我宁愿这样做(我认为明显的for循环会太慢)。

1 个答案:

答案 0 :(得分:3)

您已经在评论中提到了答案:

A[:,:,None] * C

这可行的原因是因为numpy将None切片解释为newaxis。来自the docs

  

选择元组中的每个newaxis对象用于将结果选择的维度扩展一个单位长度维度。添加的维度是newaxis对象在选择元组中的位置。

因此切片相当于这样做:

A.reshape(len(A), -1, 1)*C

由于我认为这些是numpy array s,因此默认情况下乘法当然是元素。