私はNumPy ndarray
の形状(32、1024)を持ち、32個の信号測定値を保持しています。私はnumpy.average
を使用していましたが、私の重みは複雑で、average
は私の結果を捨てる合計に基づいて重みの正規化を実行します。NumPy ndarrayブロードキャスト - シェイプ(X、)vs(X、1)
平均値のコードを見ると、信号配列で重みを掛けてから最初の軸を合計することで同じことを達成できることがわかりました。しかし、(32、1024)信号配列で私の(32、)ウェイト配列を乗算しようとすると、(32、)が(32、1024)にブロードキャストできないため、次元の不一致が生じます。私は重み配列の形状を変更した場合、予想通り(32、1)その後、すべての作品が、これはかなり醜いコードになります:numpyのはにブロードキャストするために私の(32)の配列を許可しない理由
avg = (weights.reshape((32, 1)) * data).sum(axis=0)
誰も説明できます(32,1024)、あるいは加重平均を実行するための代替方法を提案するか?
numpyは '(1,32)'から '(1024,32)'に展開できます。しかし、 '(32、)'を '(32,1)'に展開する許可を与えなければなりません。これにより、a(32、)にa(1024、)を掛けるなど、他の状況でのあいまいさを避けることができます。私の最近の答えでこれについて詳しくは、http://stackoverflow.com/a/39238203/901925 – hpaulj