python中的动态数组和速度——增长数组的最快方法

can*_*tor 2 python arrays numpy

我发现了一些关于这个问题的一般帖子(尤其是列表与数组),但我想知道是否有人知道使用 numpy.append 或重新分配条目是否更快?

具体来说,如果您知道您将拥有一个最大大小为 100 的数组,例如,但不确定最终大小,那么最好:

array_to_mod = np.zeros(100)
for something in loop:
    array_to_mod[something] = new_value
final_array = array_to_mod[0:len(loop)]
Run Code Online (Sandbox Code Playgroud)

其中 loop 是一些你不知道的先验数字,除了它低于 100,或者是类似的东西:

final_array = np.array([])
for something in loop:
    final_array = np.append(final_array, new_value)
Run Code Online (Sandbox Code Playgroud)

想法?

Ant*_*pov 5

性能测试:

def func1(new_value):
    array_to_mod = np.zeros(100)
    for i in range(0,100):
        array_to_mod[i] = new_value
    final_array = array_to_mod[0:len(range(0,100))]
    return final_array

def func2(new_value):
    final_array = np.array([])
    for i in range(0,100):
        final_array = np.append(final_array, new_value)
    return(final_array)

In [236]: %timeit func1(1)
10000 loops, best of 3: 23.5 us per loop

In [237]: %timeit func2(1)
1000 loops, best of 3: 789 us per loop
Run Code Online (Sandbox Code Playgroud)

所以 firs 方法要快得多,你应该使用它,正如评论中提到的@Divakar