高效数据类型Python(列表或numpy数组?)



我仍然不知道是使用list还是numpy数组
我从后者开始,但由于我必须做很多附加我最终遇到了许多vstack,使我的代码变慢了
使用list可以解决这个问题,但我也需要删除元素这再次与numpy数组上的delete配合良好。

现在看来,我必须编写自己的数据类型(使用编译语言和包装(。我只是好奇是否没有办法使用python类型来完成这项工作。

总之,这是我的数据类型必须满足的标准:

  • 2d个n(可变(行,每行k个(固定(元素
  • 一体存储在内存中(有利于高效操作(
  • 追加行(具有平均常数时间,如C++向量总是k个元素(
  • 删除一组元素(最好:在原地,在末尾保留可用空间以便以后追加(
  • 给定行和列索引(O(1(样数据[行*k+列]的访问元素

对我来说,拥有这样的数据类型似乎很有用,而且在C/Fortran中实现它并非不可能
我能用python得到的最接近的结果是什么?(或者,你认为为数据类型编写一个python类有效吗?在这种情况下,我应该期望什么性能?(

在我看来,如果您在C或Fortran中执行此操作,您必须了解数组的大小,以便分配正确的内存量(忽略realloc!(。那么,假设您知道这一点,为什么需要追加到数组中呢?

在任何情况下,numpy数组都有resize方法,您可以使用该方法来扩展数组的大小。

最新更新