如何在list
(向量)上的Python成员操作中执行,例如在Matlab / Octave中。我的意思是,给出两个列表:
a = [1,2,3]
b = [4,5,6]
是否有成员运算符,例如:
c = a .* b = [1*4,2*5,3*6]
d = a ./ b = [1/4,2/5,3/6]
我知道我可以自己实施,如果没有这样的模块,我会这样做。一种不完全防弹的方式可能是:
# Memberwise product:
def mwprod(a,b):
c = []
if len(a) == len(b):
for a,b in zip(a,b):
try:
c.append(a*b)
except:
c.append(NaN)
return c
如user3426575
所述,这可以用非常pythonic的方式浓缩:
c = [ x*y for x, y in zip(a,b) ]
无论如何,我想知道在list
上过载或实现这些操作符的更密集和美观的东西。
答案 0 :(得分:2)
你可以这样试试,
>>> [ item * b[k] for k,item in enumerate(a)]
[4, 10, 18]
>>> [ item / b[k] for k,item in enumerate(a)]
[0.25, 0.4, 0.5]
答案 1 :(得分:2)
这可以通过 numpy :
来完成>>> import numpy as np
>>> a = np.array([1,2,3],float) # float argument is used so that / operator does float division rather than integer division
>>> b = np.array([4,5,6],float)
>>> a*b
array([ 4., 10., 18.])
>>> a/b
array([ 0.25, 0.4 , 0.5 ])