如何在Python中操作笛卡尔坐标?

4 投票
4 回答
9827 浏览
提问于 2025-04-18 07:58

我有一组基本的笛卡尔坐标,我想用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),这可能不是你想要的结果。我建议你使用 numpyadd 函数: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文档

撰写回答