如何转换
形式的以下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循环会太慢)。
答案 0 :(得分:3)
您已经在评论中提到了答案:
A[:,:,None] * C
这可行的原因是因为numpy将None
切片解释为newaxis
。来自the docs:
选择元组中的每个newaxis对象用于将结果选择的维度扩展一个单位长度维度。添加的维度是newaxis对象在选择元组中的位置。
因此切片相当于这样做:
A.reshape(len(A), -1, 1)*C
由于我认为这些是numpy array
s,因此默认情况下乘法当然是元素。