미리 문자열의 길이를 알지 못하고 문자열을 저장할 numpy 재 배열을 초기화 할 수 있습니까? A (인위적인) 예를 들어가변 길이 numpy 재 배열 문자열
:
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
쇼 ''과 ''않는 이유?)
I가 유형 (말)
|S10
로 초기화 경우
마찬가지로, file_name
다음 물건의 길이는 10
하지만,이 calcu에서 잘립니다 적절한 문자열 길이가 이고 선험적으로이므로 (사전에 아무것도 알지 못했기 때문에) 내 것과 완전히 같지 않습니다.
(예 : |S9999999999999
)을 초기화하는 것 외에 다른 대안이 있습니까? (즉, 어리석은 상한선)?
이것은 좋은 질문입니다. 재 배열의 길이 0 문자열은 30 분 동안 머리를 찢어 버렸습니다. – Christoph