我沒有astrop
包,不知道Angle
對象的詳細信息。但我可以做一些Python和numpy的觀察。
<Angle 1.2557346257567 deg>
是此對象的字符串表示形式,由其__repr__
方法生成。
TypeError for len(s[0])
表示該對象不是__len__
方法。它不是列表的子類,也不是專用的numpy
數組。檢查其文檔。它可能有一種產生一個或多個數值的方法。
你不說你如何試圖'添加'一個角度數組,或什麼樣的數組。如果數組是數字的,例如dtype=float
,然後做
A[0]= <Angle...>
是行不通的,因爲Angle
是不是一個數字,也不會產生一個 - 至少在沒有一些方法。你需要告訴我們這個目標數組應該包含什麼。數字,角度對象?
您可以構建一個包含對象的數組。 np.array(s)
可能工作。它在列表包含字典對象時執行。
In [67]: ll
Out[67]: [{1: 2}, {}, {'a': 1, 'b': 2}]
In [68]: np.array(ll)
Out[68]: array([{1: 2}, {}, {'b': 2, 'a': 1}], dtype=object)
但np.array([...])
可能會非常棘手使用,因爲它的設計製造數字的多維數組 - 如果可能的話。
或者您可能需要製作A = np.zeros((3,),dtype=object)
數組,並分別賦值,A[0]=s[0]
。但是這樣的對象數組只是列表中的變體。這不是一個二維數組數組。
從以前astropy
問題:
How to covert np.ndarray into astropy.coordinates.Angle class?
Angle(angles_quantity).wrap_at('360d').value # This returns a simple ndarray again.
=================
挖掘到的文檔和astropy github上代碼,我看到Angle
是Quantity
的一個子類,它是ndarray
的子類。它試圖實際上是一個具有適當的unit
定義的數組(或標量)。
.value
方法返回self.view(np.ndarray)
,除非它的形狀爲0d,在這種情況下,它將返回標量值self.item()
。
因此,您應該能夠定義具有多個值的Angle
,例如,
Angle([1.23, 1.24, 1.25])
我不知道你是否可以加入多個Angles
到一個
Angle(s)
其中s
是你的角度對象名單,可能會奏效。我看不到版本的concatenate
或stack
。
你可以添加一些'Angle'文檔嗎?有很多'numpy'用戶對'astropy'完全不瞭解。 – hpaulj
@hpaulj這在很大程度上是無關緊要的,這是一個通用的問題,當試圖將任何對象放入一個預先分配的numpy數組中充滿零時會發生。我剛剛在我的'numpy.zeros()'調用中添加了'dtype = object',並且一切正常 – Anonymous