Python数组乘法

yqlxgs2m  于 2023-02-07  发布在  Python
关注(0)|答案(3)|浏览(98)
hh=[[82.5], [168.5]]
N=1./5
ll=N*hh

我做错了什么?我收到错误:
"无法将序列乘以'float'类型的非int"
我试着添加float(),但这并没有解决我的问题;
我需要乘以数组中的每个元素...感谢所有

**好的,谢谢你关于number * array的想法,但是如何相乘array * array,我尝试了与number * array相同的方法,但是有问题:

编辑2:**

hh=[[82.5], [168.5]]
N=zip(*hh)
ll = [[x*N for x in y] for y in hh]

???

uubf1zoe

uubf1zoe1#

在Python中,当你把一个序列乘以X时,并不是把序列中的每个成员都乘以,而是把序列X重复几次,这就是为什么X必须是整数(不能是浮点型)。
你要做的是使用一个列表解析:

hh = [[82.5], [168.5]]
N  = 1.0 / 5
ll = [[x*N for x in y] for y in hh]
kzipqqlq

kzipqqlq2#

在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])

或者你也可以做得有点像 haskell 式的(尽管没有优雅):

>>> import operator
>>> from functools import partial, reduce
>>> add = partial(operator.mul, 2)
>>> list(map(add, [2,2]))
[4, 4]
vwkv1x7d

vwkv1x7d3#

您还可以使用numpy数组将数组中的数字相乘。

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

相关问题