python - numpy.transpose 的时间复杂度
问题描述
np.transpose 的时间复杂度是多少?
在我看来,它在内部循环了两个 for 循环,这意味着它应该具有 O(n2) 复杂度,但有人可以确认吗?另外,有什么办法可以降低矩阵转置的时间复杂度
解决方案
在内存中,矩阵被表示为连续的内存块,就像它是一个一维数组一样。N维是我们人类用来使问题更容易理解的抽象。对于numpy来说,转置矩阵就是简单的换轴,但是内存没有变化。
所以时间复杂度是O(1)因为要转置一个数组,numpy 只是交换每个轴的形状和步幅信息。
无需复制任何数据即可实现这一点。Numpy 可以简单地改变它对底层内存的看法来构造新数组。
如果您想加深主题,可以看到这个带有插图的漂亮答案
推荐阅读
- python - 如何批量更新 Google Cloud Functions 中的 requirements.txt 文件
- swift - 在隐式展开可选值时意外发现 nil:无法解决
- postgresql - .sql 文件中的 \i '/docker-entrypoint-initdb.d/tables/users.sql' 显示错误。不知道为什么
- c++ - 初始化列表、参数包扩展、折叠表达式和求值顺序
- azure - Azure Function AppSettings 使用 Terraform 和多个地图源
- java - 为什么继承在这里不能正常工作?扩展 Java 类中的方法没有给我想要得到的结果
- javascript - 在 React 中更改背景图片的 URL
- javascript - 使用 for 循环时,如何在开始另一次提取之前等待一次提取完成?
- c++ - 我想在激活缓冲区后使用 cin 或 cout 。我应该怎么办
- python - 如何在 postgresql 数据库中导入 geojson 文件?