d最初に対角線を指定し、次に。を使用して一連の行列-ベクトル乗算を実行することによって作成される対角行列適用関数を実装したいと思いますx。もちろん、必要なのは要素ごとのベクトル乗算だけなので、実際の行列を作成したくはありません。
ここで、一部のユーザーは形状の対角線、一部の形状を提供しようとしてdい(k,)ます(k,1)。また、x形(k,)をとることができます(k,1)。*結果が入力と同じ形になるという点で、apply()メソッドをfornumpy行列と同じように動作させたいと思いますx。
したがって、質問:Python / Numpyでは、2つのnp.arrayxとy形状を要素ごとに乗算する方法、(k,)または(k,1)(任意の組み合わせで)結果の配列が次の形状になるようにする方法はありxますか?
私は少し実験しました[:,None]、
x = np.empty((4,1))
y = np.empty(4)
(x * y).shape # (4,4) -- nope
(y * y).shape # (4,) -- yes
(x * y[:,None]).shape # (4, 1) -- yes
(y * y[:,None]).shape # (4,4) -- nope
確かにコードをでラップすることはできますがif len(x.shape)==...:、それはあまりPython的ではありません。
提案?