前提・実現したいこと
以下のコードは6✖️1行の行列と1✖️3の行列の積を計算する意図で書いたプログラムです。
ab_result2の行で一応計算はできましたが、正直可読性がいまいちで簡潔に描きたいと思っています。
できればab_result1のように簡潔に表記したいのですが、なぜかvalue errorと表示されます。
このvalue errorはなぜ発生するのでしょうか?
また、一次元配列同士の積はどのように書くのが可読性のよい記述になるのでしょうか?
質問とはそれますが、
print(a.shape)で表示される(6,)は6行✖️1の配列という意味であっていますか?
(形状(6,1)が(6,)とデフォルトで表記されてしまっているという理解であってますか?)
import numpy as np a = np.array([1,2,3,4,5,6]) b = np.array([100,200,300]) print(a.shape) #(6,) ←これは6行✖️1の意味であってますか?((6,1)と同じ意味?) print(b.shape) #(3,) ab_result1 = a* b.T #6✖️1行の行列と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]]
補足情報(FW/ツールのバージョンなど)
python3.7
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/03 23:20
2020/08/04 03:34
2020/08/04 04:45