为了加快 np.std、np.sum 等沿 n 维巨大 numpy 数组的轴的函数,建议沿最后一个轴应用。
当我这样做时, np.transpose 将我要操作的轴旋转到最后一个轴。它真的是重新洗牌内存中的数据,还是只是改变轴的寻址方式?
当我尝试使用 %timeit 测量时间时。它在微秒内完成了这个转置,(远小于复制我所拥有的 (112x1024x1024) 数组所需的时间。
如果它实际上并没有重新排序内存中的数据而只是更改寻址,那么当应用于新旋转的最后一个轴时,它是否仍会加快 np.sum 或 np.std 的速度?
当我尝试测量它时,我似乎确实加快了速度。但我不明白怎么做。
更新
转置似乎并没有真正加快速度。最快的轴在 C 排序时是最后一个,而在 Fortran 排序时是第一个。因此,在应用 np.sum 或 np.std 之前进行转置是没有意义的。对于我的特定代码,我通过在数组创建期间给出 order='FORTRAN' 解决了这个问题。这使得第一轴最快。
感谢所有的答案。