【问题标题】:Summing up n number matrix in python在python中总结n个矩阵
【发布时间】:2014-12-04 18:35:02
【问题描述】:

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

 np.outer(vector, matrix) 

它显示内存错误,所以我将矩阵拆分为 matrix[:,:10] 并单独计算。它产生了一个矩阵 M of 1500*(40*10)。我需要在这里对每个矩阵求和,即前 40 列与下一个 40 列等等......如果我使用循环,它会很慢。

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

有人可以帮我有效地完成这个操作吗?

【问题讨论】:

    标签: python numpy scipy scikit-learn


    【解决方案1】:

    您只需进行一点重塑即可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]])
    

    【讨论】:

      猜你喜欢
      • 2019-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-09
      • 2018-11-08
      • 1970-01-01
      • 2016-08-30
      • 1970-01-01
      相关资源
      最近更新 更多