我想知道是否有可能在数值变量列表之间进行数学运算?例如,我有..
pointA = [ 22, 44, 83 ]
pointB = [ -17, 11, -25 ]
pointC = pointA - pointB
#result: [ 5, 55, 61 ]
或者我应该创建自己的功能?谢谢!
答案 0 :(得分:5)
安装numpy。
>>> import numpy
>>> numpy.add([ 22, 44, 83 ], [ -17, 11, -25 ])
array([ 5, 55, 58])
数组对象大多与列表兼容,但功能更强大。
>>> pointA = numpy.array([ 22, 44, 83 ])
>>> pointB = numpy.array([ -17, 11, -25 ])
>>> pointA + pointB
array([ 5, 55, 58])
>>> pointA * pointB
array([ -374, 484, -2075])
>>> pointA.dot(pointB)
-1965
支持大量其他操作,矩阵和多维数组......
答案 1 :(得分:4)
您要添加而不是减去,以获得该结果......无论如何,list comprehensions和zip()
会为您提供所需内容:
>>> pointA = [22, 44, 83]
>>> pointB = [-17, 11, -25]
>>> pointC = [a + b for a, b in zip(pointA, pointB)]
>>> pointC
[5, 55, 58]
答案 2 :(得分:4)
可以使用map
:
pointC = map(lambda p1, p2: p1 + p2, pointA, pointB)
或更简单地说:
from operators import add
pointC = map(add, pointA, pointB)
答案 3 :(得分:1)
或许这样的事情:
In [1]: def calculate(p1, p2):
...: return map(sum, zip(p1, p2))
In [2]: pointA = [ 22, 44, 83 ]
...: pointB = [ -17, 11, -25 ]
In [3]: calculate(pointA, pointB)
Out[3]: [5, 55, 58]
答案 4 :(得分:0)
我一直在研究Python中的线性代数模块,可用于此。它重量轻,易于使用。如果您想要添加两个以上的点,add()
方法允许您添加矩阵列表。
请在此处查看:https://github.com/jeremynealbrown/mbyn
A = [
[8, 3, 4],
[21, 3, 7],
[3, 5, 2]
]
B = [
[5, 3, 1],
[1, 9, 4],
[3, 6, 1]
]
mbyn.add([A, B])
#output
#13, 6, 5
#22, 12, 11
#6, 11, 3