.append在python中非常慢,有什么方法可以改善它吗?

i = 2
feature_vector_set = []
while i < 2405 - 2:
    j = 2
    while j < 1200 - 2:
       block = diff_image[i-2:i+3,j-2:j+3]
       feature = block.flatten()
       feature_vector_set.append(feature)
       j = j+1
    i = i+1

diff_image为int16,形状为(2405,1200) 整个循环需要40分钟才能运行,主要是由以下几行引起的:

feature_vector_set.append(feature)

是否有其他方法可以达到相同的结果?

lxy1195 回答:.append在python中非常慢,有什么方法可以改善它吗?

如果要追加很多元素,列表就不适合它。

尝试使用双端队列。它是python集合的一部分,内部使用了双向链表。

from collections import deque

i = 2
feature_vector_set = deque()
while i < 2405 - 2:
   j = 2
   while j < 1200 - 2:
       block = diff_image[i-2:i+3,j-2:j+3]
       feature = block.flatten()
       feature_vector_set.append(feature)
       j = j+1
   i = I+1
feature_vector_list = list(feature_vector_set)

您可以找到针对python数据类型here

的常见操作的时间复杂性

Deque documentation

本文链接:https://www.f2er.com/3147699.html

大家都在问