我想执行元素明智的乘法,在Python中将两个列表乘以值,就像我们可以在Matlab中一样 .
这就是我在Matlab中的表现 .
a = [1,2,3,4]
b = [2,3,4,5]
a .* b = [2, 6, 12, 20]
列表理解将为 a
的 x
和 b
的 y
的每个组合提供16个列表条目 . 不确定如何映射这个 .
如果有人对此感兴趣,我有一个数据集,并希望将它乘以 Numpy.linspace(1.0, 0.5, num=len(dataset)) =)
.
14 回答
使用与
zip()
混合的列表推导: .由于您已经在使用
numpy
,因此将数据存储在numpy
数组而不是列表中是有意义的 . 一旦你这样做,你就可以免费获得元素产品:使用np.multiply(a,b):
您可以尝试在循环中乘以每个元素 . 这样做的简写就是
相当直观的方式:
创建一个数组;将每个列表乘以数组;将数组转换为列表
还有一个答案:
-1
...需要导入+1
...非常易读产出[10,22,36,52]
对于大型列表,我们可以通过以下方式实现:
product_iter_object.next()
给出输出列表中的每个元素 .输出将是两个输入列表中较短者的长度 .
你可以用
lambda
进行乘法运算gahooa的答案对于 Headers 中的措辞是正确的,但是如果列表已经是大于10的numpy格式,那么它将更快(3个数量级)以及更具可读性,可以进行简单的numpy乘法,如NPE . 我得到这些时间:
即来自以下测试程序 .
map
函数在这里非常有用 . 使用map
,我们可以将任何函数应用于iterable的每个元素 .Python 3.x
当然:
相当于
我们可以通过以下方式获得我们的解
在Python 2.x中
map()
表示:将函数应用于iterable的每个元素并构造一个新列表 . 在Python 3.x中,map
构造迭代器而不是列表 .我们可以使用
mul
运算符代替my_mul
Python 2.7
Python 3.5
请注意,由于
map()
构造了一个迭代器,我们使用*
iterable unpacking运算符来获取列表 . 解包方法比list
构造函数快一点:可以使用枚举 .
要保持列表类型,并在一行中执行(当然,将numpy导入为np之后):
要么
您可以将此用于相同长度的列表