[英]How to compare every element of every list to all the other elements?
我使用了下面的代码,但我知道它的计算效率不高,而且我知道每一对应该只比较一次,并且每次迭代的比较次数应该更少
Full_book_Dwt_diff=[]
for page_number in range(len(Full_book_DWT)):
compared_page_DWT=[]
for i in range(len(Full_book_DWT[page_number])):
DWT_diff_per_word=[]
for sub in range(len(Full_book_DWT)):
for j in range(len(Full_book_DWT[sub])):
Diff=np.absolute(Full_book_DWT[page_number][i]-Full_book_DWT[sub][j])
size=Diff.size
DWT_diff_per_word.append(((np.sum(Diff)/size),i,sub,j))
DWT_diff_per_word.sort(key=lambda x: x[0])
compared_page_DWT.append(DWT_diff_per_word)
Full_book_Dwt_diff.append(compared_page_DWT)
从page_number+1
开始内部循环,这样您就不会两次比较相同的元素。
Full_book_Dwt_diff = []
for page_number, page in enumerate(Full_book_DWT):
compared_page_DWT = []
for i, word in enumerate(page):
DWT_diff_per_word = []
for page_number2, page2 in enumerate(Full_book_DWT[page_number+1:], page_number+1):
for j, word2 in enumerate(page2):
Diff = np.absolute(word, word2)
size = Diff.size
DWT_diff_per_word.append(((np.sum(Diff)/size),i,page_number2,j))
DWT_diff_per_word.sort(key=lambda x: x[0])
compared_page_DWT.append(DWT_diff_per_word)
Full_book_Dwt_diff.append(compared_page_DWT)
我想我解释错了,但这个解决方案对我来说效果最好
word_counter=np.zeros((len(Full_book_DWT), 1))
page_counter=0
pairs=[]
for page_number in range(len(Full_book_DWT)):
page_counter+=1
for i in range(len(Full_book_DWT[page_number])):
word_counter[page_number]+=1
for sub in range(page_counter,len(Full_book_DWT)):
for j in range(int(word_counter[page_number]),len(Full_book_DWT[sub])):
Diff=np.absolute(Full_book_DWT[page_number][i]
-Full_book_DWT[sub][j])
size=Diff.size
pairs.append((page_number,i,sub,j,(np.sum(Diff)/size)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.