我有如下定义的类似问题,如何在这里使用向量化而不是嵌套循环?
func
在下面
和arr1
和ar1
分别是ft1
和ft2
。
skimage.measure.compare_ssim(ft1, ft2,
win_size=FEATURE_SSIM_WIN, K1=FEATURE_SSIM_K, K2=FEATURE_SSIM_K)`
lis =[]
array1 = np.array([arr1, arr2, arr3])
array2 = np.array([ar1, ar2, ar3])
for arr in array1:
for ar in array2:
val = func(arr, ar)
if val > 1: #can be any integer at place of 1.
lis.append(val)`
答案 0 :(得分:0)
您可以这样写它-
lis = [ func(arr, ar) for arr in array1 for ar in array2 if func(arr, ar) >1 ]
编辑-上面的代码将对func(arr,ar)进行两次评估。 试试这个吧-
lis = [ func(arr, ar) for arr in array1 for ar in array2 ]
lis = [ val for val in lis if val >1]