Python 如何将numpy 2D数组与numpy 1D数组相乘?
两个阵列:Python 如何将numpy 2D数组与numpy 1D数组相乘?,python,numpy,Python,Numpy,两个阵列: 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数组)==len(nD数组)?您需要将数组b转
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数组)==len(nD数组)
?您需要将数组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]]
或者,可以就地修改第二个数组的属性:
b.shape = (b.size, 1)
print(a.shape) # (2, 3)
print(b.shape) # (2, 1)
print(a * b)
# [[ 6 9 6]
# [25 30 5]]
谢谢Python中此语法的名称是什么:
[:,None]
?@Ashwin,您可以搜索numpy.newaxis
。