问题描述
有没有办法对不是 'C' 或 'F' 的 reshape 函数进行自定义排序?
我想通过首先更改第二个索引,然后更改第三个索引,最后更改第一个索引来获取一个平面数组并使其成为 3 维的?
例如类似的东西
a = np.arange(12).reshape((2,2,3),(2,3,1)) # Second parameter not real numpy
导致:
a[:,:,0] = [[0,1],[6,7]]
a[:,1] = [[2,3],[8,9]]
a[:,2] = [[4,5],[10,11]]
这似乎是很普通的功能,但我似乎无法找到一种方法来做到这一点,而无需在循环中手动重塑它,这是不可取的。
感谢您的帮助!
解决方法
首先,你生产了什么?
this.dgLogView = new HW_Hub.CustomDataGridView();
现在让我们尝试向后工作:
简单的重塑无济于事:
In [127]: a = np.zeros((2,2,2),int)
In [128]: a = np.zeros((2,3),int)
In [129]: a[:,:,0] = [[0,1],[6,7]]
...: a[:,1] = [[2,3],[8,9]]
...: a[:,2] = [[4,5],[10,11]]
In [130]: a
Out[130]:
array([[[ 0,4],[ 1,3,5]],[[ 6,8,10],[ 7,9,11]]])
但转置最后两个轴:
In [131]: a.reshape(2,6)
Out[131]:
array([[ 0,4,1,[ 6,10,7,11]])
所以在向前的方向:
In [132]: a.transpose(0,1)
Out[132]:
array([[[ 0,[ 2,[ 4,7],[ 8,9],11]]])
In [133]: a.transpose(0,1).reshape(2,6)
Out[133]:
array([[ 0,11]])