【Numpy】一组标量乘以向量

在NumPy中,当你对一个数组和一个向量进行逐元素相乘时,它们的形状需要满足广播规则,才能够进行元素级的乘法操作。广播是一组规则,允许NumPy在不同形状的数组上执行操作,从而使得某些操作更加灵活和高效。

在你的情况下:

1. 如果数组的形状是(100,)(一个一维数组),向量的形状是(2,)(同样是一维的),广播规则不会自动调整它们的形状以进行逐元素相乘。在NumPy中,为了进行广播,两个数组的维度要么相同,要么其中一个维度为1。 

# 广播不起作用的示例
import numpy as np

array_1d = np.random.rand(100)
vector_1d = np.random.rand(2)

# 这会导致 ValueError
result = array_1d * vector_1d

2. 如果数组的形状是`(100, 1)`(一个具有单列的二维数组),广播规则可以调整它们的形状,因为数组的第二个维度为1,从而使得逐元素相乘的操作变得可能。 

# 广播起作用的示例
import numpy as np

array_2d = np.random.rand(100, 1)
vector_1d = np.random.rand(2)

# 由于广播,这会起作用
result = array_2d * vector_1d

如果你想在一个一维数组和一个一维向量之间执行逐元素相乘,你可以通过改变它们的形状,使它们的维度变得兼容。例如:

import numpy as np

array_1d = np.random.rand(100)
vector_1d = np.random.rand(2)

# 将数组的形状改变为(100, 1),以使广播起作用
result = array_1d.reshape((100, 1)) * vector_1d

你可能感兴趣的:(numpy)