在一个用 python 编写的机器学习项目中,我需要一个高效的循环缓冲区,collections.deque
但可以持续访问任何元素,如numpy.array
. 问题是 deque 显然是一个链表。请在我不知道此用例的python库中轻松实现一些有效的东西吗?
我想我可以在我的用例中简单地修改固定大小numpy.array
和移动 0 索引,但这是我的 python 文化,因为这不是我第一次需要这样的东西。
在一个用 python 编写的机器学习项目中,我需要一个高效的循环缓冲区,collections.deque
但可以持续访问任何元素,如numpy.array
. 问题是 deque 显然是一个链表。请在我不知道此用例的python库中轻松实现一些有效的东西吗?
我想我可以在我的用例中简单地修改固定大小numpy.array
和移动 0 索引,但这是我的 python 文化,因为这不是我第一次需要这样的东西。
collections.deque
不完全是一个链表。这是一个大小为 64 的数组的双向链表。我会说这是一个相当不错的选择,当您希望在两端都进行随机访问和附加而无需不断重新分配时。
但是,如果您已经完成了适当的性能分析并且该循环缓冲区确实是您的瓶颈,那么您可以在纯 C 中实现缓冲区以提高性能并添加到 python 的绑定。