Numba 中的类型列表与 ND 数组

Typed lists vs ND-arrays in Numba

有人可以澄清一下,在 ND 数组上使用 Numba 类型列表有什么好处?另外,两者在速度方面如何比较,在什么情况下建议使用类型化列表?

类型列表 当您需要追加 一个元素序列但您不知道元素的总数并且您甚至找不到合理的 bound。这样的数据结构比一维数组昂贵(在内存space和计算时间上)要多得多。

一维数组无法有效地调整大小:需要创建一个新数组并且必须执行复制。但是,一维数组的索引非常便宜。 Numpy 还提供了许多可以 本机 对其进行操作的函数(当传递给 Numpy 函数时,列表会隐式转换为数组,这个过程很昂贵)。请注意,项目的数量可以限制在合理的大小(即不高于实际元素的数量),您可以创建一个大数组,然后添加元素,最后处理数组的子视图.

ND 数组不能直接与列表进行比较。请注意,列表列表类似于 锯齿状数组 (它们可以包含不同大小的列表),而 ND 数组类似于(固定大小)N x ... x M table .列表的列表效率很低,通常不需要。

因此,尽可能使用 ND 阵列,并且您不需要经常调整 它们的大小(或append/remove 元素)。否则,使用类型列表。