从输出中删除消息 (Skycoord)

Removing messages from output (Skycoord)

我正在使用 astropy 的 skycoord 功能,遇到以下问题:

x= [201.3, 214.5, 201.6]
y= [49.6, 51.89, 43.2]

coord = SkyCoord(x1, y1, frame="icrs", unit="deg")

现在,当我打印 coord 时,我得到以下输出:

[<SkyCoord (ICRS): (ra, dec) in deg
    (201.3,49.6) >, <SkyCoord (ICRS): (ra, dec) in deg
    (214.5,51.89)>, <SkyCoord (ICRS): (ra, dec) in deg
    (201.6,43.2)>]

我的问题是我不想要 [<SkyCoord (ICRS): (ra, dec) in deg 消息。我只想要列表中的这些数字对。我尝试了 if 语句,但没有任何运气。我坚持如何解决这个问题。如有任何帮助,我们将不胜感激。

一个简短的说明:我认为您发布的代码不是您实际使用的代码 运行。从您的输出看来,您制作了一个包含多个 SkyCoord 对象的数组,每对 ra/dec 坐标对应一个对象;类似于:

x = [201.3, 214.5, 201.6]
y = [49.6, 51.89, 43.2]

coords = []

for x1, y1 in zip(x, y):
    coord = SkyCoord(x1, y1, frame="icrs", unit="deg")
    coords.append(coord)

没有必要这样做——您可以为每个坐标传递 SkyCoord 个 list/array 值:

>>> ra = [201.3, 214.5, 201.6]
>>> dec = [49.6, 51.89, 43.2]
>>> coord = SkyCoord(ra, dec, frame="icrs", unit="deg")
>>> coord
<SkyCoord (ICRS): (ra, dec) in deg
    [(201.3, 49.6 ), (214.5, 51.89), (201.6, 43.2 )]>

SkyCoord 是一个 Python 对象,它充当许多信息的容器:包括坐标值本身、坐标的单位、框架、坐标系等.

对于任何复杂的 Python 对象来说,它的默认字符串格式通常会告诉您它是什么类型的对象,以及它包含的最重要的数据是什么。这里的“消息”只是对象本身的值。

如果您想显示某些特定信息(例如,在您正在编写的脚本中),它无法对您想要显示的内容做出假设,因为很多人会有很多不同的用例。

从你的问题中并不能完全清楚你想要显示坐标的确切目的。也就是说,您想要的输出形式到底是什么?根据您的具体需求,可能有不同的方法。

例如,有一个 [SkyCoord.to_string()] 方法有很多选项,用于返回坐标、打印等的纯字符串表示形式。

使用我在上面制作的示例 coord 对象:

>>> coord.to_string()
['201.3 49.6', '214.5 51.89', '201.6 43.2']

你可以看到它 returns 一个字符串列表,每个坐标对一个。您可以像这样分别打印这些:

>>> for c in coord.to_string():
...     print(c)
...
 
201.3 49.6
214.5 51.89
201.6 43.2

遗憾的是文档中没有更多示例,但您可以看到 to_string() 有许多不同的格式化选项。