【问题标题】:Sum nth columns elementwise in Numpy matrix在 Numpy 矩阵中按元素对第 n 列求和
【发布时间】:2017-09-30 06:47:09
【问题描述】:

我有以下 numpy 矩阵:

A = [[a,b,c,d,e,f],
     [g,h,i,j,k,l],
     ...]

我需要以 element-wise 的方式对所有第 n 列求和。因此,如果 n 为 2,则答案必须是:

B = [[a+c+e, b+d+f],
     [g+i+k, h+j+l],
     ...]

(就像将矩阵分成 3 个,每个有 2 列并添加它们。)

但如果 n 为 3,则答案必须是:

C = [[a+d, b+e, c+f],
     [g+j, h+k, i+l],
     ...]

(就像将矩阵分成 2 个,每个有 3 列并添加它们。)

是否有一般情况下会接受值 n 而无需使用循环?

【问题讨论】:

    标签: python numpy matrix vectorization


    【解决方案1】:

    重塑以将最后一个轴一分为二,后者的长度为n,并沿前者求和-

    A.reshape(A.shape[0],-1,n).sum(1)
    

    示例运行 -

    In [38]: A
    Out[38]: 
    array([[0, 5, 3, 2, 5, 6],
           [6, 1, 0, 8, 4, 0],
           [8, 6, 1, 5, 7, 0]])
    
    In [39]: n = 2
    
    In [40]: A.reshape(A.shape[0],-1,n).sum(1)
    Out[40]: 
    array([[ 8, 13],
           [10,  9],
           [16, 11]])
    
    In [41]: n = 3
    
    In [42]: A.reshape(A.shape[0],-1,n).sum(1)
    Out[42]: 
    array([[ 2, 10,  9],
           [14,  5,  0],
           [13, 13,  1]])
    

    【讨论】:

    • 非常优雅的解决方案。完美运行。
    猜你喜欢
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 2015-06-24
    • 2021-12-31
    • 2023-03-03
    • 2020-09-06
    • 1970-01-01
    • 2011-12-28
    相关资源
    最近更新 更多