我有一個4d numpy數組,代表一個帶有3d實例的數據集。 可以說陣列的形狀是(32, 32, 3, 73257)
。重新排列一個4d numpy數組
如何將數組的形狀更改爲(73257, 32, 32, 3)
?
---問題更新 看起來,rollaxis和轉置都有竅門。
Thanx for reply!
我有一個4d numpy數組,代表一個帶有3d實例的數據集。 可以說陣列的形狀是(32, 32, 3, 73257)
。重新排列一個4d numpy數組
如何將數組的形狀更改爲(73257, 32, 32, 3)
?
---問題更新 看起來,rollaxis和轉置都有竅門。
Thanx for reply!
的np.transpose
功能不正是你想要的,你可以通過它控制你想換哪個軸的軸參數:
a = np.empty((32, 32, 3, 73257))
b = np.transpose(a, (3, 0, 1, 2))
b的軸是a的置換版本:b的軸0是a的第3軸,b的軸1是a等的第0軸...
這樣,可以指定在第二或第三位想要的大小32的軸線的:
b = np.transpose(a, (3, 1, 0, 2))
也給出了所希望的形狀的陣列,但是與前一個不同。
它看起來像np.rollaxis(arr, axis=-1)
會做你想做的。例如:
>>> arr = np.empty(32, 32, 3, 73257)
>>> arr2 = np.rollaxis(arr, axis=-1)
>>> arr2.shape
(73257, 32, 32, 3)
這將使arr[i,j,k,l] == arr2[l,i,j,k]
所有ijkl
相關 - http://stackoverflow.com/questions/41022182/change-shape-of-nparray – Divakar
如果你用'(3,0,1,2)'' – Eric
''transpose'也可以在這裏工作你是對的。我會盡快糾正我的答覆。 – Panos