我有两个矩阵A和B,它们的列数相等,但行数通常不相等。我想将矩阵A和B中的所有列对加起来。一个带有for循环的天真的实现是这样的:
import numpy as np
ncol = 3
nrow_A = 5
nrow_B = 10
A = np.ones((nrow_A,ncol))
B = np.zeros((nrow_B,ncol))
C = np.empty((nrow_A*nrow_B,ncol))
k = 0
for i in range(nrow_A):
for j in range(nrow_B):
C[k,:] = A[i,:]+B[j,:]
k += 1
在此示例中,它返回一个50 * 3的矩阵,该矩阵填充了1。感觉只需一行代码就可以实现。我怎样才能做到这一点?
如果A
稍加调整形状,则可以将两个矩阵加在一起,然后将条目连接到结果数组的第一个轴中:
>>> np.concatenate(A[:,np.newaxis,:] + B)
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.],
...
稍微快一点的替代方法concatenate
是使用reshape
:
(A[:,np.newaxis,:] + B).reshape(-1, 3)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句