我有一个基本的笛卡尔坐标集合,我想用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)发布于 2014-05-29 18:58:15
听起来你在找点课。这里有一个简单的例子:
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文档。
发布于 2014-05-29 18:49:13
根据您想要处理的坐标,您还可以滥用络合数字:
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发布于 2014-05-29 18:38:15
Python本机不支持列表上的元素操作;您可以通过列表理解或map来实现它,但是对于这个用例来说,这有点笨重。如果你做了很多这样的事情,我建议你看看NumPy。
https://stackoverflow.com/questions/23940493
复制相似问题