我正在生成一些目录,并希望有一个评论栏。出于某种原因,当我生成列并尝试存储评论时,它只会占用第一个字符。我如何获得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