我想计算一个列表的每个条目与另一个列表的每个元素之间的差异。考虑两个列表A和B
A = [1,2,3,4] B=[5,6,7]新的列表c应该有12个条目。
C=[1-5,1-6,1-7,2-5,2-6,2-7,....,4-7]
C=[-4,-5,-6,-3,-4,-5,....,-3]当然,使用循环可以做到这一点,但是有没有更快、更有效的方法呢?我的列表A和B的维度分别为8000和2500,我必须连续做大约150次。非常感谢您的提前!
发布于 2017-12-19 05:24:06
通过使用numpy中的repeat和tile
import numpy as np
np.repeat(A,len(B))-np.tile(B,len(A))
Out[221]: array([-4, -5, -6, -3, -4, -5, -2, -3, -4, -1, -2, -3])发布于 2017-12-19 13:07:05
您可以在一行中尝试,而无需导入任何模块:
print(list(map(lambda x:list(map(lambda y:(x-y),b)),a)))输出:
[[-4, -5, -6], [-3, -4, -5], [-2, -3, -4], [-1, -2, -3]]或者使用列表理解:
print([(i-j) for i in a for j in b])输出:
[-4, -5, -6, -3, -4, -5, -2, -3, -4, -1, -2, -3]https://stackoverflow.com/questions/47876461
复制相似问题