我有一个形状为(24,3)的np.ndarray。我想以不寻常的方式展平这个数组。我想先有[0:8,0]然后有[0:8,1]然后有[0:8,2]然后有[8:16,0],依此类推。
我当然可以用暴力手段做到这一点,但是也许有一个更优雅,更有效的解决方案。
new_array = np.array([])
np.append(new_array, old_array[0:8, 0])
np.append(new_array, old_array[0:8, 1])
np.append(new_array, old_array[0:8, 2])
np.append(new_array, old_array[8:16, 0])
np.append(new_array, old_array[8:16, 1])
np.append(new_array, old_array[8:16, 2])
np.append(new_array, old_array[16:24, 0])
np.append(new_array, old_array[16:24, 1])
np.append(new_array, old_array[16:24, 2])
答案 0 :(得分:1)
n = 8 # cut length along first axis
new_array = old_array.reshape(-1,n,old_array.shape[1]).swapaxes(1,2).ravel()