从输出中删除消息 (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()
有许多不同的格式化选项。
我正在使用 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()
有许多不同的格式化选项。