Python数组乘法

tha*_*ing 10 python floating-point multiplying

hh=[[82.5], [168.5]]
N=1./5
ll=N*hh
Run Code Online (Sandbox Code Playgroud)

我做错了什么?我收到错误:

"不能将序列乘以'浮动'类型的非int"

我尝试添加float(),但这不能解决我的问题;

我需要将数组中的每个元素相乘...感谢所有


**好的感谢数字*数组的想法,但如何乘以数组*数组,我尝试与数字*数组相同,但有问题:

编辑2:**

hh=[[82.5], [168.5]]
N=zip(*hh)
ll = [[x*N for x in y] for y in hh]
Run Code Online (Sandbox Code Playgroud)

???

Boa*_*niv 12

当你X在Python中乘以序列时,它不会将序列的每个成员相乘 - 它的作用是重复序列X次数.这就是为什么X必须是一个整数(它不能是一个浮点数).

你想要做的是使用列表理解:

hh = [[82.5], [168.5]]
N  = 1.0 / 5
ll = [[x*N for x in y] for y in hh]
Run Code Online (Sandbox Code Playgroud)


Sku*_*del 6

在Python中你可以这样做:

>>> [2] * 3
[2, 2, 2]
Run Code Online (Sandbox Code Playgroud)

这需要一个int类型.

你正在寻找的东西是亲属map或列表理解的东西.

>>> list(map(lambda x: x * 2, [2, 2]))
[4, 4]
>>> [x * 2 for x in [2, 2]]
[4, 4]
Run Code Online (Sandbox Code Playgroud)

你也可以通过生成器理解来懒散地完成它.

(x * 2 for x in [2, 2])
Run Code Online (Sandbox Code Playgroud)

或者你可以做一点Haskellish(尽管没有优雅):

>>> import operator
>>> from functools import partial, reduce
>>> add = partial(operator.mul, 2)
>>> list(map(add, [2,2]))
[4, 4]
Run Code Online (Sandbox Code Playgroud)


Sig*_*gyF 5

您也可以使用numpy数组乘以数组中的数字。

>>> hh = numpy.asarray([[82.5], [168.5]])
>>> N = 1.0/5
>>> ll = N*hh
>>> ll
array([[ 16.5],
       [ 33.7]])
Run Code Online (Sandbox Code Playgroud)