我正在生成一些目錄,並希望有一個評論欄。出於某種原因,當我生成列並嘗試存儲評論時,它只會佔用第一個字符。我如何獲得astropy Column來存儲任意長度的字符串?
from astropy.table import Column
C1 = Column(['']*12, name = 'ID')
C1[4] = 'test comment'
然後
print C1[4]
>> t
看着C1,我看到<Column name='ID' dtype='str1' length=12>
所以它顯然只存儲1個字符的字符串。
,如果我嘗試
C2 = Column(['some really long silly string']*12, name = 'ID')
C2[4] = 'test comment'
然後
print C1[4]
>> test comment
但同樣,我也只能存儲多達29字符字符串,因爲<Column name='ID' dtype='str29' length=12>
這是一個可怕的解決方案呢。
如何告訴列存儲任何長度的字符串?
相關:[numpy可變長度的recarray字符串](http://stackoverflow.com/questions/9108837/numpy-recarray-strings-of-variable-length)。例如,你可以使用'Column([''] * 12,name ='ID',dtype = np.object)'。 – Evert
有趣的是,這似乎工作。如果我設置'dtype = np.str',它仍然默認爲'str1'。如果你不能想到另一個解決方法,而沒有泛化爲'np.object',那麼你應該提交這個答案。 – FriskyGrub
像這樣的表(numpy的recarray,Pandas的數據框)是爲某些固定類型(〜固定內存分配)而設計的,這就是爲什麼不存在通用(可變)字符串類型的原因。例如,當你用字符串初始化一列時,熊貓會推斷出一個「對象」。 – Evert