Die*_*oDZ 2 python arrays numpy reshape
我有阵列
A = array([[ 1., 2., 3., 10., 11., 12.],
[ 4., 5., 6., 13., 14., 15.],
[ 7., 8., 9., 16., 17., 18.],
[ 19., 20., 21., 28., 29., 30.],
[ 22., 23., 24., 31., 32., 33.],
[ 25., 26., 27., 34., 35., 36.]])
Run Code Online (Sandbox Code Playgroud)
我想重塑它以获得
B = [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]
Run Code Online (Sandbox Code Playgroud)
我试过了
>>> B = A.reshape(1,36)
array([[ 1., 2., 3., 10., 11., 12., 4., 5., 6., 13., 14.,
15., 7., 8., 9., 16., 17., 18., 19., 20., 21., 28.,
29., 30., 22., 23., 24., 31., 32., 33., 25., 26., 27.,
34., 35., 36.]])
Run Code Online (Sandbox Code Playgroud)
但是,显然,我没有达到结果.我的实际数据与示例不同,因此我无法对数组A进行排序以获取B.
我想我需要更多重塑......
拆分这两个轴中的2每一个,使其余的轴长度各reshape给一个4D阵列然后交换中间的两个轴,np.swapaxes()最后用np.ravel()-
A.reshape(2,3,2,3).swapaxes(1,2).ravel()
Run Code Online (Sandbox Code Playgroud)
一般地说 -
m,n = A.shape
A.reshape(2,m//2,2,n//2).swapaxes(1,2).ravel()
Run Code Online (Sandbox Code Playgroud)
样品运行 -
In [15]: A
Out[15]:
array([[ 1., 2., 3., 10., 11., 12.],
[ 4., 5., 6., 13., 14., 15.],
[ 7., 8., 9., 16., 17., 18.],
[ 19., 20., 21., 28., 29., 30.],
[ 22., 23., 24., 31., 32., 33.],
[ 25., 26., 27., 34., 35., 36.]])
In [16]: A.reshape(2,3,2,3).swapaxes(1,2).ravel()
Out[16]:
array([ 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.])
Run Code Online (Sandbox Code Playgroud)