如何在Python中操作笛卡尔坐标?
我有一组基本的笛卡尔坐标,我想用Python来处理它们。比如,我有一个框,四个角的坐标是这样的:
0,4---4,4
0,0---4,0
我想找到一条从(0,2)到(4,2)的水平线。请问我需要把每个坐标拆分成单独的X和Y值,然后用基本的数学运算来处理吗?还是说有办法把坐标当作(x,y)对来处理?比如,我想这样说:
New_Row_Start_Coordinate = (0,2) + (0,0)
New_Row_End_Coordinate = New_Row_Start_Coordinate + (0,4)
4 个回答
0
Python本身不支持对列表进行逐个元素的操作;你可以通过列表推导式或者使用map
来实现,但这样做对于这个情况来说有点麻烦。如果你经常需要做这种操作,我建议你看看NumPy这个库。
0
对于 a = (0,2)
和 b = (0,0)
,如果你用 a + b
,结果会是 (0, 2, 0, 0)
,这可能不是你想要的结果。我建议你使用 numpy
的 add
函数:http://docs.scipy.org/doc/numpy/reference/generated/numpy.add.html
参数: x1, x2 : 类似数组的对象
返回值: x1 和 x2 的逐元素相加的结果。(...)
1
根据你想用坐标做什么,你也可以不太正确地使用复数:
import cmath
New_Row_Start_Coordinate = (0+2j) + (0+0j)
New_Row_End_Coordinate = New_Row_Start_Coordinate + (4+0j)
print New_Row_End_Coordinate.real
print New_Row_End_Coordinate.imag
6
听起来你在找一个点(Point)类。这里有一个简单的例子:
class Point:
def __init__(self, x, y):
self.x, self.y = x, y
def __str__(self):
return "{}, {}".format(self.x, self.y)
def __neg__(self):
return Point(-self.x, -self.y)
def __add__(self, point):
return Point(self.x+point.x, self.y+point.y)
def __sub__(self, point):
return self + -point
然后你可以像这样使用它:
>>> p1 = Point(1,1)
>>> p2 = Point(3,4)
>>> print p1 + p2
4, 5
你可以根据需要添加更多的操作。想了解你可以实现的所有方法,可以查看Python文档。