Czy jest możliwe zainicjowanie powtarzającego się powtarzania, które będzie zawierać ciągi znaków, nie znając wcześniej długości łańcuchów?powtarzające się ciągi o zmiennej długości
Jako (contrived) przykład:
mydf = np.empty((numrows,), dtype=[ ('file_name','STRING'), ('file_size_MB',float) ])
Problem polega na tym, że mam konstruowania mój recarray wyprzedzeniem wypełniania jej informacji, a nie koniecznie znać maksymalną długość file_name
z góry .
Wszystkie moje próby spowodować dziedzinie strun jest obcięty:
>>> 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')
(Tak na marginesie, dlaczego mydf['file_name']
pokaz 'F' i 'A', natomiast mydf
pokazy '' i ''?)
Podobnie, jeśli zainicjować z rodzaju (powiedzmy) |S10
dla file_name
potem robi się obcięty na długość 10.
jedynym podobne pytanie udało mi się znaleźć to this one, ale to obli znosi odpowiednią długość ciągu a priori, a zatem nie jest dokładnie taka sama jak moja (ponieważ nie wiem z góry).
Czy jest jakaś alternatywa inna niż zainicjowanie file_name
z (np.) |S9999999999999
(tj. Jakiś śmieszny górny limit)?
To jest dobre pytanie. długość 0 struny w rekolekcjach właśnie kazał mi wyrywać włosy na pół godziny! – Christoph