【发布时间】:2014-11-22 10:16:45
【问题描述】:
如何在 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 上重载或实现此类运算符的更密集和美观的东西。
【问题讨论】:
-
您正在寻找NumPy。
-
一个非常“pythonic”的方法是使用列表解析:
c = [x * y for x, y in zip(a, b)]
标签: python matlab list vector octave