Преобразование вложенных циклов в векторизованную форму для оценки функции при использовании numpy - PullRequest
0 голосов
/ 20 сентября 2018

У меня проблема, аналогичная описанной ниже, как я могу использовать здесь векторизацию вместо вложенных циклов?

* 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)`

1 Ответ

0 голосов
/ 20 сентября 2018

вы можете написать это примерно так -

lis = [ func(arr, ar)  for arr in array1 for ar in array2 if func(arr, ar) >1 ]

Edit - код выше оценивает func (arr, ar) дважды.Попробуйте вместо этого -

lis = [ func(arr, ar)  for arr in array1 for ar in array2 ]
lis = [ val for val in lis if val >1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...