矩阵数据结构
简单的二维数组允许在 O(1) 时间内交换矩阵中的行(或列)。是否存在一种有效的数据结构,允许在 O(1) 时间内交换矩阵的行和列?
A simple 2 dimensional array allows swapping rows (or columns) in a matrix in O(1) time. Is there an efficient data structure that would allow swapping both rows and columns of a matrix in O(1) time?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您必须将矩阵存储为行列表或列列表。这给出了 O(1) 中的行交换或列交换。
但是,您可以在其顶部添加另一个层来处理列顺序,以便您可以在 O(1) 中重新排序列。
因此,对于每次访问,您需要执行以下操作:
将行交换为:
将列交换为:
You have to store your matrix either as a list of rows or list of columns. Which gives either swapping of rows or swapping of columns in O(1).
However, you can add another layer on top of it to handle column order so that you can reorder columns in O(1).
So for every access you need to do:
Swap rows as:
And swap columns as:
也许 numpy array 可以帮助你——它允许访问行和列,而且它相当高效(这是 scipy 的基本数据类型)
Maybe numpy array can help you -- it allows to access both rows and columns and it's fairly efficient (it's the basic data type for scipy)