1
3x5x5
"행렬"(실제로는 3D numpy.ndarray
)이 있습니다. 내가 수행해야 할 몇 가지 계산을 위해, 내가 처음으로, 그래서이 3D 배열의 각 부분 배열을 반대해야합니다 당신이 볼 수 있듯이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