高效的数据类型Python(列表还是numpy数组?)

高效的数据类型Python(列表还是numpy数组?),python,arrays,performance,numpy,Python,Arrays,Performance,Numpy,我仍然不知道是使用列表还是numpy数组。 我从后者开始,但是因为我必须做很多附加工作 我最终遇到了许多vStack问题,使我的代码速度减慢。 使用list可以解决这个问题,但我还需要删除元素 这同样适用于numpy数组上的delete 现在看来,我必须编写自己的数据类型(使用编译语言和wrap)。 我只是好奇,是否有办法使用python类型完成工作 总而言之,我的数据类型必须满足以下标准: 2d n(可变)行,每行k(固定)元素 在内存中,一块一块地存储(对于高效运行来说,这将是一件好事)

我仍然不知道是使用列表还是numpy数组。
我从后者开始,但是因为我必须做很多附加工作 我最终遇到了许多vStack问题,使我的代码速度减慢。
使用list可以解决这个问题,但我还需要删除元素 这同样适用于numpy数组上的delete

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

总而言之,我的数据类型必须满足以下标准:

  • 2d n(可变)行,每行k(固定)元素
  • 在内存中,一块一块地存储(对于高效运行来说,这将是一件好事)
  • 附加行(平均为常数,像C++向量总是K元素)
  • 删除一组元素(最佳:原地,在末尾保留可用空间,以便以后追加)
  • 给定行和列索引(O(1)类数据[row*k+column]的access元素
对于我来说,这样的数据类型通常很有用,而且在C/Fortran中实现起来并非不可能。
用python我能得到的最接近的结果是什么?
(或者,您认为为数据类型编写python类是否可行?在这种情况下,我应该期望什么性能?

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


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

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


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

我怀疑问题不在于numpy数据结构本身,而在于使用
vstack
,它总是创建一个新数组,而不是调整现有数组的大小。一个句号,两个逗号,三个问号…It必须是语法抵制中的记录!我怀疑问题不在于numpy数据结构本身,而是使用了
vstack
,它总是创建一个新数组,而不是调整现有数组的大小。一个句号,两个逗号,三个问号…它必须是语法抵制中的记录!:oIn C我将以arr开头ay大小为kx1000,每次空间用完时将分配的内存加倍(如果加倍复制所有数据是可以的,只要不是每次添加行时都复制数据)。调整大小看起来很有趣。(我以前没有意识到。)我想我还是应该自己记账,总是调整大小到两倍,而不是每增加一行就调整大小。在C语言中,我会从数组大小kx1000开始,每次用完空间时,就将分配的内存增加一倍(如果这个加倍复制所有数据是可以的,只要不是每次我添加一行时都复制)。调整大小看起来很有趣。(我以前没有意识到。)我想我还是应该自己记账,总是调整大小使大小加倍,而不是为每一行调整大小。