高效的数据类型Python(list或numpy数组?)

时间:2011-07-05 03:04:52

标签: python arrays performance numpy

我仍然对使用list或numpy数组感到困惑 我从后者开始,但因为我必须做很多追加 我最终得到了许多vstack,减慢了我的代码 使用list可以解决这个问题,但我还需要删除元素 这对numpy数组上的删除再次有效。

现在看起来我将不得不编写自己的数据类型(用编译语言编写)。 如果没有办法使用python类型完成工作,我只是好奇。

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

  • 2d n(可变)行,每行k(固定)元素
  • 在记忆中一件(对于有效的操作会很好)
  • 追加行(平均常量时间,如C ++向量,总是k个元素)
  • 删除一组元素(最好:就地,在末尾保留可用空间以便以后添加)
  • 给定行和列索引的访问元素(O(1)类似数据[row * k + column]

对我来说,拥有这样的数据类型并不是无法在C / Fortran中实现,这对我来说通常很有用 我能用python获得的最接近的是什么? (或许,你认为为数据类型编写一个python类会有用吗?在这种情况下我应该期待什么性能?)

1 个答案:

答案 0 :(得分:1)

正如我所看到的,如果你在C或Fortran中这样做,你必须知道数组的大小,以便你可以分配正确的内存量(忽略realloc! )。所以假设你知道这个,你为什么需要附加到数组?

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