私はブロードキャストルールとnumpy.dotメソッドを乗算係数より少し明確にしたいと考えています。私は、新しい軸(3,1の形状)を加えることによって掛けることができる形状(2、3)の2つの配列を作成しましたが、新しい軸を追加して回転させてもnp.dot (3,1)形状にする。ここでは、以下の小さなテストが行われます。形状のナンシードット(2、)(3,1)は誤差を与えますが乗算はしません
x_1 = np.random.rand(2,)
print(x_1)
x_2 = np.random.rand(3,)
print(x_2)
> [ 0.48362051 0.55892736]
> [ 0.16988562 0.09078386 0.04844093]
x_8 = np.dot(x_1, x_2[:, np.newaxis])
> ValueError: shapes (2,) and (3,1) not aligned: 2 (dim 0) != 3 (dim 0)
x_9 = x_1 * x_2[:, np.newaxis]
print(x_9)
> [[ 0.47231067 0.30899592]
[ 0.17436521 0.11407352]
[ 0.01312074 0.00858387]]
x__7 = x_1[:, np.newaxis] * x_2[:, np.newaxis]
> ValueError: operands could not be broadcast together with shapes (2,1) (3,1)
私は(2,1)のnp.dotを理解&(1,3)動作しますが、なぜない(2,1)&(3,1)放送のルール番号2は、二次元である、と言うので、互換性があります.1つの次元が1の場合、np.dotが機能するか、またはルール番号2が間違っていると理解していますか?また、X_9がなぜ同じ形であるのかx_8(np.dot)ではなく(乗算)、なぜ動作するのですか?
'放送中の'ルールは 'ドット'には適用されません。 – hpaulj
'dot 'が2つの1d配列で何をすると思いますか?または、2を2dに拡張した場合内部製品?アウト? – hpaulj
@hpaulj方程式は私が取り組んでいた、δ= W f(h)は内積を取得しようとしています。最後にスカラー値。だから私は、nump倍以上のnp.dotメソッドを使って、より理解しやすく、どこでnp.dotとnumpyの乗算を使うべきかを検討していました。これについて知りたいことがあれば教えてください。そして、ありがとう、np.dotがそれらに適用されないことを放送の文書で知りませんでした。 –