2024-04-24 22:11:10 发布
网友
我有一组基本的笛卡尔坐标,我想用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)
听起来你在找一个点班。这里有一个简单的例子:
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 docs。
根据要对坐标执行的操作,还可以误用complex数字:
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
Python本身并不支持对列表执行elementwise操作;您可以通过列表理解或map来完成,但对于这个用例来说,这有点笨拙。如果你经常做这种事,我建议你看看NumPy。
map
听起来你在找一个点班。这里有一个简单的例子:
你可以这样做:
您可以根据需要添加任意多个其他操作。有关可以实现的所有方法的列表,请参见Python docs。
根据要对坐标执行的操作,还可以误用complex数字:
Python本身并不支持对列表执行elementwise操作;您可以通过列表理解或
map
来完成,但对于这个用例来说,这有点笨拙。如果你经常做这种事,我建议你看看NumPy。相关问题 更多 >
编程相关推荐