从astropy Distance obj访问浮点值

2024-10-01 04:53:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要从Distanceastropy类访问float值。在

这里有一个MWE:

from astropy.coordinates import Distance
from astropy import units as u

d = []
for _ in range(10):
    d.append(Distance(_, unit=u.kpc))

这将产生<class 'astropy.coordinates.distances.Distance'>对象的列表:

^{pr2}$

我需要存储浮动(而不是对象),但我不知道如何访问它们。因为这个MWE是一个更大代码的一部分,我不能只做d.append(_)。我需要从Distance类生成的对象访问float。在

添加:

我尝试将列表转换为numpy数组:

np.asarray(d)

但我得到:

ValueError: setting an array element with a sequence.

Tags: 对象infromimport列表forasfloat
3条回答

您需要Distance对象的value属性。在

d = []
for _ in range(10):
    d.append(Distance(_, unit=u.kpc).value)

…但是,您也可以使用变量_,而不首先实例化这些对象。或者我被误解了。在

另一种说法是:

^{pr2}$

你是说

d = []
for _ in range(10):
    x = Distance(_, unit=u.kpc)
    d.append(x.kpc)  # x.Mpc , x.lightyear, etc. 

或者

^{pr2}$

为了清楚起见,Distance对象可以类似于数组。{1}把所有的对象都变成一个浪费的列表。相反,你可以

>>> dists = Distance(np.arange(10), unit=u.kpc)  # Note the use of a Numpy array
>>> dists
<Distance [ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.] kpc>

大多数其他代码应该将其识别为Numpy数组并相应地执行操作。如果不是的话,你总是可以做到的

^{pr2}$

得到一个以kpc表示的原始Numpy ndarray。不要使用多个Distance对象的列表。太浪费了!在

相关问题 更多 >