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

时间:2013-11-07 01:24:49

标签: memory numpy transpose

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

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

我想转置最后两个轴,即

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

然而,我不希望看到一个蹒跚的步伐!我想实际复制数组并将其重新排序 in memory 。实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:15)

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

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

答案 1 :(得分:0)

在引擎盖下,b的步幅与a的步幅不同。

更喜欢使用ascontiguousarray,它将在需要时复制内存。而copy将始终复制内存。