2024-06-07 00:57:36 发布
网友
我尝试将2个矩阵x,y乘以形状(41)和(41,6) 因为它应该向多维中的每个箭头广播单个矩阵
我想这样做:
x*y
但我知道这个错误
ValueError: operands could not be broadcast together with shapes (41,6) (41,)
有什么我错过的吗?
你可以试试这个,会有用的!
>>> import numpy as np >>> x = np.array([[1, 2], [1, 2], [1, 2]]) >>> y = np.array([1, 2, 3]) >>> np.dot(y,x) array([ 6, 12])
不太清楚,你想达到什么目标。也许你可以举一个例子来说明你的投入和预期的产出。一种可能性是:
import numpy as np x = np.array([[1, 2], [1, 2], [1, 2]]) y = np.array([1, 2, 3]) res = x * np.transpose(np.array([y,]*2))
这将把x的每一列乘以y,因此上述示例的结果是:
array([[1, 2], [2, 4], [3, 6]])
广播包括两个步骤
为所有数组提供相同的维数
展开1维度以匹配其他数组
1
你的投入
(41,6) (41,)
一个是2d,另一个是1d;广播可以将1d更改为(1, 41),但不会自动向另一个方向展开(41,1)。
(1, 41)
(41,1)
(41,6) (1,41)
(41,41)和(6,41)都不匹配。
所以你需要把y改成(41,1),或者把x改成(6,41)
y
x
(6,41)
x.T*y x*y[:,None]
当然,我假设您需要逐元素乘法,而不是np.dot矩阵乘积。
np.dot
你可以试试这个,会有用的!
不太清楚,你想达到什么目标。也许你可以举一个例子来说明你的投入和预期的产出。一种可能性是:
这将把x的每一列乘以y,因此上述示例的结果是:
广播包括两个步骤
为所有数组提供相同的维数
展开
1
维度以匹配其他数组你的投入
一个是2d,另一个是1d;广播可以将1d更改为
(1, 41)
,但不会自动向另一个方向展开(41,1)
。(41,41)和(6,41)都不匹配。
所以你需要把
y
改成(41,1)
,或者把x
改成(6,41)
当然,我假设您需要逐元素乘法,而不是
np.dot
矩阵乘积。相关问题 更多 >
编程相关推荐