总结python中的n数矩阵

时间:2014-10-09 18:00:14

标签: python numpy scipy scikit-learn

我有一个40 * 2000的矩阵,它的维数为1500.我用numpy.outer来计算 向量的外积与矩阵的每列如下:

 np.outer(vector, matrix) 

它显示了内存错误,因此我将矩阵分割为矩阵[:,:10]并分别计算。它导致矩阵 M 为1500 *(40 * 10)。我需要对这里的每个矩阵求和,这是前40列和另一个下一个40列等等......如果我使用循环,它将会很慢。

     M[:,:40]+ M[:,40:80] + .....

有人可以帮我有效地进行这项操作吗?

1 个答案:

答案 0 :(得分:0)

您需要通过轴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]])