Skip to main content
 首页 » 编程设计

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

2025年05月04日14sxdcgaq8080

我找到了一些关于这个问题的一般性帖子(尤其是列表与数组),但我想知道是否有人知道使用 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)] 

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

final_array = np.array([]) 
for something in loop: 
    final_array = np.append(final_array, new_value) 

想法?

请您参考如下方法:

性能测试:

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 

所以第一种方法要快得多,你应该像@Divakar 在评论中提到的那样使用它