行列と列ベクトルの内積を計算したいとします。
したがって、Numpy/Python では次のようになります。
a=numpy.asarray([[1,2,3], [4,5,6], [7,8,9]])
b=numpy.asarray([[2],[1],[3]])
a.dot(b)
結果:
配列([[13]、[31]、[49]])
これまでのところ、非常にうまくいっていますが、なぜこれも機能しているのでしょうか?
b=numpy.asarray([2,1,3])
a.dot(b)
結果:
配列([13, 31, 49])
[2,1,3] は行ベクトル (ドット積を適用するには転置が必要) であると予想しますが、Numpy はデフォルトで配列を列ベクトルとして認識しているようです (行列乗算の場合)?
これはどのように作動しますか?
編集:
そして、その理由は次のとおりです。
b=numpy.asarray([2,1,3])
b.transpose()==b
そのため、マトリックス ドット ベクトル配列は機能します (そのため、列ベクトルとして認識されます) が、他の操作 (転置) は機能しません。これは本当に一貫したデザインではありませんね。