数字列表上的数学运算

时间:2013-05-09 03:59:28

标签: python

我想知道是否有可能在数值变量列表之间进行数学运算?例如,我有..

pointA = [ 22, 44, 83 ]
pointB = [ -17, 11, -25 ]

pointC = pointA - pointB
#result: [ 5, 55, 61 ]

或者我应该创建自己的功能?谢谢!

5 个答案:

答案 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 comprehensionszip()会为您提供所需内容:

>>> 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