我有一个3维的NumPy数组,例如:a = np.random.random((2,3,5)) 我想要交换最后两个轴,也就是b = a.transpose(0,2,1) 然而,我不想要一种扭曲步幅的视图!我想要实际复制数组并在内存中重新排序。有什么最好的方法来实现这一点?
copy() 方法默认会重新排列为 C 连续顺序: b = a.transpose(0,2,1).copy() 注意: copy() 函数的默认行为不同。在使用该函数时,必须显式指定顺序以确保进行 C 连续的复制:b = np.copy(a.transpose(0,2,1), order='C') (请注意函数的文档字符串指出,ndarray方法是创建数组副本的首选方法。)
b = np.zeros((2,5,3)); b[:] = a.transpose(0,2,1)
,但你的更简洁。 - bdforbes