设A
是一个含有[m x n]
元素的矩阵和B
另一个含有[m x n x o]
元素的矩阵。
有没有什么线性代数的方法可以把这两个矩阵相加,使得C = A + B
,其中C
将在[m x n x o]
中,而不会沿着o
维进行任何循环?在
示例:
让
A=
1 2 5 6
1 2 3 4
1 5 8 9
以及
B(:,:,1)=
^{pr2}$B(:,:,2)=
^{pr2}$B(:,:,3)=
^{pr2}$C=A+B
C(:,:,1)=
2 3 6 7
2 3 4 5
2 6 9 10
C(:,:,2)=
2 3 6 7
2 3 4 5
2 6 9 10
C(:,:,3)=
2 3 6 7
2 3 4 5
2 6 9 10
这在Numpy中很容易实现:它将自动为您展开A。在
输出
^{pr2}$有关Numpy如何处理组合不同形状数组的详细信息,请参阅NumpyBroadcasting文档。在
无论
b
的内容是什么,该代码都可以工作,我只是使用了一个数组来匹配示例数据。但是,如果您只想让c
成为一个mxnxo矩阵,通过展开a
创建,然后将一个添加到您甚至不需要创建b
的所有元素中;您可以这样做:在MATLAB中,这可以使用隐式展开(R2016b以后)或
bsxfun(@plus,...)
来完成。在以下内容适用于所有最新的MATLAB版本:
在纽比,这种行为被称为“广播”。在
您可以添加它们,说明缺少的(
o
)维度的位置。下面是一个使用numpy
数组的python
示例:相关问题 更多 >
编程相关推荐