4

次のフォームのnumpy配列Aを変換するにはどうすればよいですか

[[1,2]
 [3,4]]

フォームの B に

[[[1,1,1],[2,2,2]]
 [[3,3,3],[4,4,4]]]

Cで要素ごとの乗算を実行できるように

[[[ 5, 6, 7],[ 8, 9,10]]
 [[11,12,13],[13,15,16]]]

?

元の問題は、スカラーをベクトルで乗算すること4 * [13,15,16]です。しかし、スカラーの代わりにスカラーの行列 (A) があり、ベクトルの代わりにベクトルの行列 (C) があります。BI のように値を実際にレプリケートしない方法がある場合は、それを優先します (明らかな for ループは遅すぎると思います)。

4

1 に答える 1

3

あなたはすでにコメントで答えを述べました:

A[:,:,None] * C

これが機能する理由は、numpy がNoneスライスをnewaxis. ドキュメントから:

選択タプル内の各 newaxis オブジェクトは、結果の選択の次元を 1 単位長の次元だけ拡張するのに役立ちます。追加された次元は、選択タプル内の newaxis オブジェクトの位置です。

したがって、そのスライスは次のことと同等です。

A.reshape(len(A), -1, 1)*C

そして、これらは numpy であると想定しているためarray、乗算はもちろんデフォルトで要素ごとに行われます。

于 2013-10-23T12:39:06.683 に答える