gpt4 book ai didi

python - 摆脱天体中的单位

转载 作者:行者123 更新时间:2023-12-05 08:41:11 25 4
gpt4 key购买 nike

我有一个很大的 (262615,3) 值数组,所有值都附加了单位。具体来源于这个函数:

def coordconvert(data):
from astropy.coordinates import SkyCoord
from astropy import units as u
import numpy as np

R = data[:,0]
ra = data[:,1]
dec = data[:,2]

c = SkyCoord(ra=ra*u.degree,dec=dec*u.degree,distance=R*u.mpc)
outdata = c.cartesian.xyz

return outdata

我希望这个数组没有单位,这样我就可以轻松地将它写入文本文件。在任何人链接 Stack Exchange 之前 question问类似的问题,我试过使用 .magnitude 但它不起作用。另外我想补充一点,由于我的阵列的性质,如果可能的话,我更喜欢这样做的最有效的方式。

数据样本:

 <Quantity -473.698 mpc> <Quantity -38.3794 mpc> <Quantity -1832.23 mpc>
<Quantity -2269.57 mpc> <Quantity -842.855 mpc> <Quantity -2445.88 mpc>

最佳答案

您的 c.cartesian.xyz 是一个 Quantity 对象。它有一个 unit 属性和一个 value 属性。

value 属性是一个 Numpy 数组,我认为这就是您想要的。

例子:

>>> from astropy.coordinates import SkyCoord
>>> c = SkyCoord(10, 20, unit='deg')
>>> c.cartesian.xyz
<Quantity [0.92541658, 0.16317591, 0.34202014]>
>>> c.cartesian.xyz.value
array([0.92541658, 0.16317591, 0.34202014])
>>> type(c.cartesian.xyz.value)
numpy.ndarray

关于python - 摆脱天体中的单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51658927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com