hh=[[82.5], [168.5]]
N=1./5
ll=N*hh
私が間違っているのは何ですか?エラーが発生しました:
「シーケンスに「float」型の非整数を乗算することはできません」
Float()を追加しようとしましたが、これで問題が解決しません。
配列内の各要素を乗算する必要があります...すべてのおかげで
hh=[[82.5], [168.5]]
N=Zip(*hh)
ll = [[x*N for x in y] for y in hh]
???
PythonでシーケンスにX
を掛けても、シーケンスの各メンバーは掛けられません。つまり、シーケンスをX
回繰り返すということです。そのため、Xは整数である必要があります(浮動小数点数にすることはできません)。
あなたがしたいことはリスト内包を使用することです:
hh = [[82.5], [168.5]]
N = 1.0 / 5
ll = [[x*N for x in y] for y in hh]
Pythonでこれを行うことができます:
>>> [2] * 3
[2, 2, 2]
これにはint型が必要です。
あなたが探しているのは、map
またはリスト内包に似たものです。
>>> list(map(lambda x: x * 2, [2, 2]))
[4, 4]
>>> [x * 2 for x in [2, 2]]
[4, 4]
あなたはそれを怠惰に行うために理解を生成することもできます。
(x * 2 for x in [2, 2])
または、少しハスケリッシュにすることもできます(エレガンスはありませんが):
>>> import operator
>>> from functools import partial, reduce
>>> add = partial(operator.mul, 2)
>>> list(map(add, [2,2]))
[4, 4]
numpy
配列を使用して、配列内の数値を乗算することもできます。
>>> hh = numpy.asarray([[82.5], [168.5]])
>>> N = 1.0/5
>>> ll = N*hh
>>> ll
array([[ 16.5],
[ 33.7]])