有什么简单的方法可以压平吗
import numpy
np.arange(12).reshape(3,4)
Out[]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
进入之内
array([ 0, 1, 4, 5, 8, 9, 2, 3, 6, 7, 10, 11])
最佳答案
似乎您正在考虑使用特定数量的col来形成块,然后获取每个块中的元素,然后转到下一个块。所以,考虑到这一点,这里有一个方法-
In [148]: a
Out[148]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
In [149]: ncols = 2 # no. of cols to be considered for each block
In [150]: a.reshape(a.shape[0],-1,ncols).swapaxes(0,1).ravel()
Out[150]: array([ 0, 1, 4, 5, 8, 9, 2, 3, 6, 7, 10, 11])
后面的动机将在
this post
中详细讨论。另外,为了保持二维格式-
In [27]: a.reshape(a.shape[0],-1,ncols).swapaxes(0,1).reshape(-1,ncols)
Out[27]:
array([[ 0, 1],
[ 4, 5],
[ 8, 9],
[ 2, 3],
[ 6, 7],
[10, 11]])
以直观的三维阵列格式-
In [28]: a.reshape(a.shape[0],-1,ncols).swapaxes(0,1)
Out[28]:
array([[[ 0, 1],
[ 4, 5],
[ 8, 9]],
[[ 2, 3],
[ 6, 7],
[10, 11]]])
关于python - 在列块中展平或分组数组-NumPy/Python,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58101239/