ここで基本的な質問に戻りますが、ご容赦ください。
Matlabでは、リストの要素に数字を追加するのは非常に簡単です:
a = [1,1,1,1,1]
b = a + 1
b
は[2,2,2,2,2]
pythonこれは、少なくともリスト上では動作しないようです。
リスト全体に単一の数値を加算する簡単で高速な方法はありますか。
ありがとう
数値のリストを操作する場合は、NumPy配列を使用することをお勧めします。
import numpy
a = [1, 1, 1 ,1, 1]
ar = numpy.array(a)
print ar + 2
与える
[3, 3, 3, 3, 3]
リスト内包表記の使用:
>>> L = [1]*5
>>> [x+1 for x in L]
[2, 2, 2, 2, 2]
>>>
おおよそforループを使用することに変換されます。
>>> newL = []
>>> for x in L:
... newL+=[x+1]
...
>>> newL
[2, 2, 2, 2, 2]
またはマップを使用して:
>>> map(lambda x:x+1, L)
[2, 2, 2, 2, 2]
>>>
マップを使用することもできます:
a = [1, 1, 1, 1, 1]
b = 1
list(map(lambda x: x + b, a))
それは与えます:
[2, 2, 2, 2, 2]
リストを理解したくない場合:
a = [1,1,1,1,1]
b = []
for i in a:
b.append(i+1)
これを試して。 (私はそれを非自明にするために例を修正しました)
import operator
import numpy as np
n=10
a = list(range(n))
a1 = [1]*len(a)
an = np.array(a)
operator.add
はほぼ2倍以上高速です
%timeit map(operator.add, a, a1)
numpyで追加するより
%timeit an+1