按自定义顺序展平np.ndarray

时间:2019-06-01 18:58:36

标签: python numpy

我有一个形状为(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])

1 个答案:

答案 0 :(得分:1)

Reshape, permute and reshape-

n = 8 # cut length along first axis
new_array = old_array.reshape(-1,n,old_array.shape[1]).swapaxes(1,2).ravel()