多角形のすべての矢印に単一の行列をブロードキャストすることになっているので、2つの行列x、yに形状(41)と(41,6) を乗算しようとします。2次元配列に異なる次元を掛ける方法
私はそれをしたい:
x*y
が、私はこのエラー
ValueError: operands could not be broadcast together with shapes (41,6) (41,)
が、私はそれを可能にするために、ここで見逃して何があり得ますか?
多角形のすべての矢印に単一の行列をブロードキャストすることになっているので、2つの行列x、yに形状(41)と(41,6) を乗算しようとします。2次元配列に異なる次元を掛ける方法
私はそれをしたい:
x*y
が、私はこのエラー
ValueError: operands could not be broadcast together with shapes (41,6) (41,)
が、私はそれを可能にするために、ここで見逃して何があり得ますか?
あなたが達成しようとしていることは確かではありません。あなたの入力と期待される出力の例を挙げることができます。一つの可能性はある。
import numpy as np
x = np.array([[1, 2], [1, 2], [1, 2]])
y = np.array([1, 2, 3])
res = x * np.transpose(np.array([y,]*2))
上記例の結果であるので、これは、YとXの各列を乗算します。
array([[1, 2],
[2, 4],
[3, 6]])
あなたが期待しているものによって異なります。一つの簡単な解決策は次のようになります。あなたの寸法(1,6)の行列を与える必要があります
y*x
。
放送
すべて与える
拡大1
dimensioあなたの入力を備えた他の配列
と一致するように、NS
(41,6) (41,)
1は、2D、他の1Dです。放送は1dを(1, 41)
に変更できますが、それ以外の方向には自動的には展開されません(41,1)
。
(41,6) (1,41)
(41,41)または(6,41)のいずれも一致しません。
だからあなたは要素の掛け算ではなく、np.dot
行列積による要素が欲しいことを、私はもちろん、と仮定してい(6,41)
x.T*y
x*y[:,None]
にごy
(41,1)
やx
に変更する必要があります。
はい、列の周りを矢印の方向に順に転置します。それは役に立ちます。ありがとう – Adam