繁体   English   中英

如何将numpy 2D数组与numpy 1D数组相乘?

[英]How to multiply numpy 2D array with numpy 1D array?

两个数组:

a = numpy.array([[2,3,2],[5,6,1]])
b = numpy.array([3,5])
c = a * b

我想要的是:

c = [[6,9,6],
     [25,30,5]]

但是,我收到了这个错误:

ValueError: operands could not be broadcast together with shapes (2,3) (2)

如何 nD数组与1D数组相乘 ,其中len(1D-array) == len(nD array)

您需要将数组b转换为(2,1)形状数组,在索引元组中使用None或numpy.newaxis

import numpy
a = numpy.array([[2,3,2],[5,6,1]])
b = numpy.array([3,5])
c = a * b[:, None]

这是文件

另一种策略是重塑第二个数组,因此它与第一个数组具有相同的维数:

c = a * b.reshape((b.size, 1))
print(c)
# [[ 6  9  6]
#  [25 30  5]]

或者,可以就地修改第二个数组的shape属性:

b.shape = (b.size, 1)
print(a.shape)  # (2, 3)
print(b.shape)  # (2, 1)
print(a * b)
# [[ 6  9  6]
#  [25 30  5]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM