1

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

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

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

还是我应该创建自己的函数?谢谢!

4

5 回答 5

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

支持大量其他操作、矩阵和多维数组...

于 2013-05-09T04:38:10.973 回答
4

您是在添加而不是减去,以获得该结果......无论如何,列出理解并将zip()给您您想要的:

>>> pointA = [22, 44, 83]
>>> pointB = [-17, 11, -25]
>>> pointC = [a + b for a, b in zip(pointA, pointB)]
>>> pointC
[5, 55, 58]
于 2013-05-09T04:03:56.597 回答
4

这可以通过以下方式完成map

pointC = map(lambda p1, p2: p1 + p2, pointA, pointB)

或者,更简单地说:

from operators import add
pointC = map(add, pointA, pointB)
于 2013-05-09T04:04:38.150 回答
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]
于 2013-05-09T04:01:47.173 回答
0

我一直在研究可以用于此的 Python 中的线性代数模块。它重量轻且易于使用。add()如果您想添加两个以上的点,该方法允许您添加矩阵列表。

在这里查看:https ://github.com/jeremyne​​albrown/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
于 2013-05-09T04:12:17.263 回答