E 'possibile inizializzare un riepilogo numerico che manterrà le stringhe, senza conoscere prima la lunghezza delle stringhe?stringhe di ripetizione numpy di lunghezza variabile
Come un (forzato) Esempio:
mydf = np.empty((numrows,), dtype=[ ('file_name','STRING'), ('file_size_MB',float) ])
Il problema è che sto costruendo il mio recArray in anticipo popolato con le informazioni, e non necessariamente conosce la lunghezza massima di file_name
in anticipo .
Tutti i miei tentativi risultato nel campo di stringa troncati:
>>> 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')
(Per inciso, perché fa mydf['file_name']
show 'f' e 'a', mentre mydf
spettacoli '' e ''?)
Allo stesso modo, se io inizializzo con il tipo di (diciamo) |S10
per file_name
allora le cose si fanno troncata a lungo 10.
L'unica domanda simile che ho trovato è this one, ma questo calcu cancella la lunghezza della stringa appropriata a priori e quindi non è proprio la mia (non so nulla in anticipo).
Esiste un'alternativa diversa dall'initalizzazione dello file_name
con (es.) |S9999999999999
(ovvero un limite superiore ridicolo)?
questa è una buona domanda. lunghezza 0 corde in recarsie mi ha fatto strappare i capelli per mezz'ora! – Christoph