1
3x5x5
"行列"(実際には3D numpy.ndarray
)があります。私は実行する必要がある計算のために、私は最初のように、この3次元配列の各サブアレイを逆にする必要があります。あなたが見ることができるようにNumPyの3D行列のすべての部分行列を逆にする
>>> x = np.arange(75).reshape(3, 5, 5)
>>> x
array([[[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]],
[[25, 26, 27, 28, 29],
[30, 31, 32, 33, 34],
[35, 36, 37, 38, 39],
[40, 41, 42, 43, 44],
[45, 46, 47, 48, 49]],
[[50, 51, 52, 53, 54],
[55, 56, 57, 58, 59],
[60, 61, 62, 63, 64],
[65, 66, 67, 68, 69],
[70, 71, 72, 73, 74]]])
>>> np.array([ np.rot90(k, 2) for k in x ])
array([[[ 24., 23., 22., 21., 20.],
[ 19., 18., 17., 16., 15.],
[ 14., 13., 12., 11., 10.],
[ 9., 8., 7., 6., 5.],
[ 4., 3., 2., 1., 0.]],
[[ 49., 48., 47., 46., 45.],
[ 44., 43., 42., 41., 40.],
[ 39., 38., 37., 36., 35.],
[ 34., 33., 32., 31., 30.],
[ 29., 28., 27., 26., 25.]],
[[ 74., 73., 72., 71., 70.],
[ 69., 68., 67., 66., 65.],
[ 64., 63., 62., 61., 60.],
[ 59., 58., 57., 56., 55.],
[ 54., 53., 52., 51., 50.]]])
、私が最初にうまく動作するように見えた解決策を発見しました(np.rot90
を使用)。しかし、より大きなインプットでのテストでは、このメソッドは、特に最初の次元が100を超えた場合には、ひどく遅くなります。
ありがとうございます!
牛、どのような驚くほど簡単でエレガントなソリューション!私の投票を取る!どうもありがとう! –
ところで、そのような解決策はどのようにあなたを攻撃しましたか? numpyのインデックス作成の仕組みはどこで知りましたか?あなたが私に紹介してくれるガイドがありますか?私は本当にそれを感謝します! –
@ Shivaさて、私は過去1年間は 'numpy'タグに従っていて、ここでマスターから学び、私ができることに答えるために、ソーシャルは私に練習を与えます:)あなたは何か似たようなことをする可能性があります。 – Divakar