问题 转置数组并实际重新排序内存


我有一个3-D NumPy数组,例如

a = np.random.random((2,3,5))

我想转置最后两个轴,即

b = a.transpose(0,2,1)

但是,我不希望看到一个蹒跚的步伐!我想实际复制数组并重新排序 在记忆中。实现这一目标的最佳方法是什么?


12297
2017-11-07 01:24


起源



答案:


copy() 默认情况下,方法将重新排序为C-contiguous顺序:

b = a.transpose(0,2,1).copy()

14
2017-11-07 01:29



谢谢。我的解决方案 只是 在你发布之前找到的是 b = np.zeros((2,5,3)); b[:] = a.transpose(0,2,1),但你的更干净。 - bdforbes


答案:


copy() 默认情况下,方法将重新排序为C-contiguous顺序:

b = a.transpose(0,2,1).copy()

14
2017-11-07 01:29



谢谢。我的解决方案 只是 在你发布之前找到的是 b = np.zeros((2,5,3)); b[:] = a.transpose(0,2,1),但你的更干净。 - bdforbes