我有两个矩阵
A = np.array(
[[1,2,3],
[4,5,6],
[7,8,9]])
B = np.array(
[[1,1,1],
[2,2,2]])
我想有一个矩阵,即3x3x2 [[A + B的第一行],[A +第二行B]]
C = np.array(
[[[2,3,4],
[5,6,7],
[8,9,10]],
[[3,4,5],
[6,7,8],
[9,10,11]]])
我知道我可以做np.concatenate((A + B [0],A + B [1])),但我不知道B预先包含了多少行我自己的编程经验如果有更简洁的方法,我很好奇。
答案 0 :(得分:1)
您的A =
和B =
命令不会生成矩阵,但会生成列表。差异很重要,因为它们没有附加numpy的漂亮矢量数学。
无论如何,您可以通过使用A
创建新轴来展开[:,None]
,进行添加,然后交换轴以获得所需的形状:
>>> A = np.array([[1,2,3], [4,5,6], [7,8,9]])
>>> B = np.array([[1,1,1], [2,2,2]])
>>> (A[:, None] + B).swapaxes(0,1)
array([[[ 2, 3, 4],
[ 5, 6, 7],
[ 8, 9, 10]],
[[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]]])
请注意,这有形状(2,3,3),而不是(3,3,2),但这是你的C形状,所以我选择了它。