Dizeleri uzun süre bilmeden dizeleri tutacak bir numpy recarray başlatmak mümkün mü? Bir (yapmacık) bir örnek olarakDeğişken uzunluklu numpy recarray dizgileri
:
mydf = np.empty((numrows,), dtype=[ ('file_name','STRING'), ('file_size_MB',float) ])
Sorun bilgilerle doldurma öncesinde benim recarray inşa olmam ve ben ille önceden file_name
maksimum uzunluğunu bilmiyorum .
Bütün girişimleri kesilmiş olan dize alanında neden:
>>> 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')
(bir kenara olarak
mydf['file_name']
gösterisi 'f' ve 'a' iken
mydf
gösterileri '' ve '' does neden?)
Ben türündeki (diyelim)
|S10
ile initialize eğer
benzer şekilde, file_name
sonra işler uzunluğu 10.
, ancak bu calcu de kesik olsun Uygun dize uzunluğu a priori ve dolayısıyla benimki ile aynı değildir (önceden hiçbir şey bilmediğim gibi).
file_name
'un (örn. |S9999999999999
(bazı saçma üst sınırlar) ile inaktifleştirilmesi dışında bir alternatif var mı?
bu iyi bir soru. recarrays'taki uzunluktaki 0 dizgiler saçlarımı yarım saat boyunca kopardı! – Christoph