微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用自定义排序进行 Numpy 整形

如何解决使用自定义排序进行 Numpy 整形

有没有办法对不是 '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]])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。