

以下のコードは6✖️１行の行列と1✖️3の行列の積を計算する意図で書いたプログラムです。

`ab_result2` の行で計算はできましたが、可読性に欠ける気がしています。  
できれば `ab_result1` のように簡潔に表記したいのですが、なぜか "value error" と表示されます。

この "value error" はなぜ発生するのでしょうか？  
また、一次元配列同士の積はどのように書くのが可読性のよい記述になるのでしょうか？

質問とは逸れますが、`print(a.shape)` で表示される `(6,)` は6行✖️1の配列という意味であっていますか？  
（形状(6,1)が(6,)とデフォルトで表記されてしまっているという理解であってますか？）

よろしくお願いします。

[code]

    import numpy as np
    
    a = np.array([1,2,3,4,5,6])
    b = np.array([100,200,300])
    
    print(a.shape) #(6,) ←これは6行✖️１の意味であってますか？（(6,1)と同じ意味？）
    print(b.shape) #(3,)
    
    
    ab_result1 = a* b.T　#6✖️１行の行列と1✖️3の行列の計算だがなぜこれでエラーがでるのか
    ab_result2 = a.reshape(a.shape[0],1) * b.reshape(1,b.shape[0])
    
    print(ab_result1)
    print(ab_result2)
    
    #出力
    ValueError: operands could not be broadcast together with shapes (6,) (3,)
    
    [ 100  200  300]
     [ 200  400  600]
     [ 300  600  900]
     [ 400  800 1200]
     [ 500 1000 1500]
     [ 600 1200 1800]]
    
[/code]


CC BY-SA 4.0
2020-08-03T15:13:27.320
69219
2020-08-03T15:57:02.687
2020-08-03T15:57:02.687
3060
26604
question
python numpy
numpy で一次元配列の行列積を簡潔に表記したい