168

Matlab でできるように、要素ごとの乗算を実行して、Python で 2 つのリストを値で乗算したいと考えています。

これは私がMatlabで行う方法です。

a = [1,2,3,4]
b = [2,3,4,5]
a .* b = [2, 6, 12, 20]

x * yリスト内包表記は、xfromayfromのすべての組み合わせに対して、16 個のリスト エントリを提供しbます。これをマッピングする方法が不明です。

なぜ誰かが興味を持っているなら、私はデータセットを持っていて、それを掛けたいと思っていNumpy.linspace(1.0, 0.5, num=len(dataset)) =)ます。

4

15 に答える 15

322

:を組み合わせたリスト内包表記を使用しzip()ます。

[a*b for a,b in zip(lista,listb)]
于 2012-04-22T19:48:34.507 に答える
97

すでに を使用しているため、データをリストではなく配列numpyに格納することは理にかなっています。numpyこれを行うと、要素ごとの製品のようなものが無料で手に入ります。

In [1]: import numpy as np

In [2]: a = np.array([1,2,3,4])

In [3]: b = np.array([2,3,4,5])

In [4]: a * b
Out[4]: array([ 2,  6, 12, 20])
于 2012-04-22T19:47:43.690 に答える
39

np.multiply(a,b) を使用します。

import numpy as np
a = [1,2,3,4]
b = [2,3,4,5]
np.multiply(a,b)
于 2016-11-14T16:55:15.740 に答える
13

さらに別の答え:

-1... インポートが必要
+1... 非常に読みやすい

import operator
a = [1,2,3,4]
b = [10,11,12,13]

list(map(operator.mul, a, b))

出力 [10、22、36、52]

于 2016-11-20T21:56:53.670 に答える
10

これを行うかなり直感的な方法:

a = [1,2,3,4]
b = [2,3,4,5]
ab = []                        #Create empty list
for i in range(0, len(a)):
     ab.append(a[i]*b[i])      #Adds each element to the list
于 2014-03-02T12:32:28.087 に答える
10

を使用して乗算できますlambda

foo=[1,2,3,4]
bar=[1,2,5,55]
l=map(lambda x,y:x*y,foo,bar)
于 2016-08-04T05:31:42.713 に答える
4

1 の配列を作成します。各リストに配列を掛けます。配列をリストに変換する

import numpy as np

a = [1,2,3,4]
b = [2,3,4,5]

c = (np.ones(len(a))*a*b).tolist()

[2.0, 6.0, 12.0, 20.0]
于 2015-12-23T15:42:54.740 に答える
4

大きなリストの場合、 iter-way で行うことができます:

product_iter_object = itertools.imap(operator.mul, [1,2,3,4], [2,3,4,5])

product_iter_object.next()出力リスト内の各要素を提供します。

出力は、2 つの入力リストのうち短い方の長さになります。

于 2014-08-21T15:09:18.333 に答える
3

列挙を使用できます。

a = [1, 2, 3, 4]
b = [2, 3, 4, 5]

ab = [val * b[i] for i, val in enumerate(a)]
于 2016-08-04T07:19:41.557 に答える