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)
想法?
性能测试:
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
| 归档时间: |
|
| 查看次数: |
2293 次 |
| 最近记录: |