2015-03-19 2 views
1

Скажем, у меня есть 2 списка:Python - как умножать только на определенные номера в 2 списках

list1 = np.array([1,4,2,5]) 
list2 = np.array([2,3,4,5]) 

Я умножая тем, чтобы получить

[2,12,8,25] 

Что делать, если я только хочу, чтобы умножить те которые меньше 3 в списке1? Так что я буду получать [2,8] только

ответ

2

Как это:

[i*j for i,j in zip(list1,list2) if i < 3] 

После zip(list1,list2) вы можете добавить условие. Если это условие не выполняется, этот конкретный элемент будет пропущен. Следовательно, вы можете добавить ограничение, которое хотите.

0

Generate маску, где ваши ценности в list1 встретить свое состояние, а затем использовать это, чтобы замаскировать свой массив и выполнить умножение:

In [315]: 

list1 = np.array([1,4,2,5]) 
list2 = np.array([2,3,4,5]) 
mask = np.where(list1 < 3) 
list1[mask] * list2[mask] 
Out[315]: 
array([2, 8]) 
Смежные вопросы