我有一个大(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 https://stackoverflow.com/questions/9403415/eliminate-units-when-using-quantities-for-python询问类似的问题,我尝试使用 .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>
Your c.cartesian.xyz
是一个数量对象。它有一个unit
属性和一个value
属性。
The value
attribute 是一个 Numpy 数组,我认为这就是你想要的。
Example:
>>> 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)