是否可以在事先不知道字符串长度的情况下初始化一个包含字符串的 numpy recarray?
作为一个(人为的)例子:
mydf = np.empty( (numrows,), dtype=[ ('file_name','STRING'), ('file_size_MB',float) ] )
问题是我在用信息填充它之前构建了我的recarray,而且我不一定知道file_name
提前的最大长度。
我所有的尝试都导致字符串字段被截断:
>>> mydf = np.empty( (2,), dtype=[('file_name',str),('file_size_mb',float)] )
>>> mydf['file_name'][0]='foobarasdf.tif'
>>> mydf['file_name'][1]='arghtidlsarbda.jpg'
>>> mydf
array([('', 6.9164002347457e-310), ('', 9.9413127e-317)],
dtype=[('file_name', 'S'), ('file_size_mb', '<f8')])
>>> mydf['file_name']
array(['f', 'a'],
dtype='|S1')
(顺便说一句,为什么mydf['file_name']
显示'f'和'a'而mydf
显示''和''?)
|S10
同样,如果我用类型(比如说)进行初始化,file_name
那么事情会在长度为 10 时被截断。
我能找到的唯一类似的问题是这个,但这会先验地计算适当的字符串长度,因此与我的不太一样(因为我事先一无所知)。
file_name
除了用(例如)初始化|S9999999999999
(即一些荒谬的上限)之外,还有其他选择吗?