我有一个矩阵,40*2000,维数1500的向量。我使用numpy.outer计算向量的外积,其矩阵的每一列如下:
np.outer(vector, matrix) 它显示内存错误,因此我将矩阵拆分为矩阵:,:10,并分别计算。得到的矩阵M为1500*(40*10)。我需要每个矩阵的和这里,我是前40列,另一个40列,等等……如果我使用循环,它将是缓慢的。
M[:,:40]+ M[:,40:80] + .....有人能帮我有效地做这个手术吗?
发布于 2014-10-09 18:14:28
只要稍微整形一下,您就可以在轴上进行sum:
import numpy
M = numpy.arange(100).reshape(5, 20)
M[:, :4]
#>>> array([[ 0, 1, 2, 3],
#>>> [20, 21, 22, 23],
#>>> [40, 41, 42, 43],
#>>> [60, 61, 62, 63],
#>>> [80, 81, 82, 83]])
M[:, 4:8]
#>>> array([[ 4, 5, 6, 7],
#>>> [24, 25, 26, 27],
#>>> [44, 45, 46, 47],
#>>> [64, 65, 66, 67],
#>>> [84, 85, 86, 87]])
...
M[:, 16:20]
#>>> array([[16, 17, 18, 19],
#>>> [36, 37, 38, 39],
#>>> [56, 57, 58, 59],
#>>> [76, 77, 78, 79],
#>>> [96, 97, 98, 99]])
M.reshape(M.shape[0], -1, 4).sum(axis=1)
#>>> array([[ 40, 45, 50, 55],
#>>> [140, 145, 150, 155],
#>>> [240, 245, 250, 255],
#>>> [340, 345, 350, 355],
#>>> [440, 445, 450, 455]])https://stackoverflow.com/questions/26285038
复制相似问题