71814


行列の要素を行もしくは列ごとに足算をした結果を，その行(列)に対応した対角成分に当てはめた行列を計算するコードを書こうとしています．しかし肝心のアルゴリズムが思いつきません．  
例としては以下のような行列が与えられた時

[code]

    a = np.matrix([[3, 1, 4], [8, 2, 3], [2, 9, 1]])
    
[/code]

行に着目した要素の足し算を行う時の期待する出力は

> [[8 0 0]  
>  [0 13 0]  
>  [0 0 12]]

のようになります．同様に列ごとの足し算の場合の期待する出力は

> [[13 0 0]  
>  [0 12 0]  
>  [0 0 8]]

となります．どなたかわかる方いらっしゃいましたらご回答をよろしくお願いします．


CC BY-SA 4.0
2020-11-09T06:38:14.397
71813
2020-11-09T06:48:12.773
36750
question
python python3
行列の要素を行もしくは列ごとに足算する方法


[numpy.diagflat](https://numpy.org/doc/stable/reference/generated/numpy.diagflat.html)
を利用します。

[code]

    ## 行
    >>> np.diagflat(a.sum(axis=1))
    matrix([[ 8,  0,  0],
            [ 0, 13,  0],
            [ 0,  0, 12]])
    
    ## 列
    >>> np.diagflat(a.sum(axis=0))
    matrix([[13,  0,  0],
            [ 0, 12,  0],
            [ 0,  0,  8]])
    
[/code]


CC BY-SA 4.0
2020-11-09T06:48:12.773
71814
2020-11-09T06:48:12.773
71813
answer