0

如何在恒定时间内将新项目插入 numpy 数组。

python 列表有一个append方法可以做到这一点,在 numpy. 它看起来像numpy.append返回数组的副本并花费线性时间。

4

1 回答 1

1

该问题的评论者是对的:numpy 数组与 Python 列表不同,因此 numpy append 方法通常不是一个好的选择。当尝试快速附加到 numpy 数组时,这可能特别棘手。numpy 数组的 append 方法返回数组的副本,其中添加了新项目。这个答案有一个很好的 Numpy 方法建议列表,并正确地提到了最好的方法是最初分配数组的最终大小。对于(1)我不知道最终数组大小应该是多少和(2)我需要更好的性能的情况,我经常使用,

a.resize(np.size(a) + 1, refcheck=False)
a[-1] = foo

哪里a是一个 numpy 数组。小心!a.resize不一样np.resize(a, ...)。如果可以在不移动数组的情况下调整数组大小,则此操作很快。因为数组可能会因调整大小而移动,所以在调整大小后对数组的引用(例如,b = a在调整大小之前进行)是不安全的。我通常设置refcheck=False,但我确保不使用a在调整大小之前可能已引用的任何数组。

于 2013-05-24T19:58:33.020 回答