Python - 如何仅将2个列表中的某些数字相乘

时间:2015-03-19 13:35:27

标签: python list numpy

说我有2个名单:

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

我一直在乘以

[2,12,8,25]

如果我只想在list1中乘以小于3的那个怎么办? 所以我会得到 仅[2,8]

3 个答案:

答案 0 :(得分:2)

像这样:

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

zip(list1,list2)之后,您可以添加条件。如果不满足该条件,则将跳过该特定项目。因此,您可以添加所需的限制。

答案 1 :(得分:1)

这是boolean indexing的好例子:

In [3]: list1[list1<3] * list2[list1<3]
Out[3]: array([2, 8])

答案 2 :(得分:0)

生成一个掩码,其中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])