文字列の長さを事前に知らなくても、文字列を保持するnumpy再配列を初期化することは可能ですか?
(不自然な)例として:
mydf = np.empty( (numrows,), dtype=[ ('file_name','STRING'), ('file_size_MB',float) ] )
問題は、再配列に情報を入力する前に再配列を構築していることであり、事前に最大長を知っているとは限りません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
for型で初期化するとfile_name
、長さ 10 で切り捨てられます。
私が見つけることができる唯一の同様の質問はthis oneですが、これはアプリオリに適切な文字列の長さを計算するため、私のものとはまったく同じではありません(事前に何も知らないため)。
file_name
with (eg) |S9999999999999
(つまり、ばかげた上限)を初期化する以外の方法はありますか?