首页 > 解决方案 > numpy.transpose 的时间复杂度

问题描述

np.transpose 的时间复杂度是多少?

在我看来,它在内部循环了两个 for 循环,这意味着它应该具有 O(n2) 复杂度,但有人可以确认吗?另外,有什么办法可以降低矩阵转置的时间复杂度

标签: pythonpython-3.xnumpy

解决方案


在内存中,矩阵被表示为连续的内存块,就像它是一个一维数组一样。N维是我们人类用来使问题更容易理解的抽象。对于numpy来说,转置矩阵就是简单的换轴,但是内存没有变化。

所以时间复杂度是O(1)因为要转置一个数组,numpy 只是交换每个轴的形状和步幅信息。

无需复制任何数据即可实现这一点。Numpy 可以简单地改变它对底层内存的看法来构造新数组。

如果您想加深主题,可以看到这个带有插图的漂亮答案


推荐阅读