Có thể khởi tạo một lần lặp lại gọn gàng để giữ các chuỗi, mà không biết độ dài của các chuỗi trước không?Các chuỗi lặp lại có độ dài thay đổi
Là một (giả tạo) ví dụ:
mydf = np.empty((numrows,), dtype=[ ('file_name','STRING'), ('file_size_MB',float) ])
Vấn đề là tôi đang xây dựng recarray tôi trước Populating nó với thông tin, và tôi không nhất thiết phải biết chiều dài tối đa của file_name
trước .
Tất cả những nỗ lực của tôi cho kết quả trong lĩnh vực chuỗi được cắt ngắn:
>>> 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')
(Là một sang một bên, tại sao mydf['file_name']
show 'f' và 'a' trong khi mydf
chương trình '' và ''?)
tương tự như vậy, nếu tôi khởi với kiểu (nói) |S10
cho file_name
sau đó mọi thứ trở nên cắt ngắn tại chiều dài 10
Các câu hỏi tương tự duy nhất tôi có thể tìm thấy là this one, nhưng điều này calcu lates độ dài chuỗi thích hợp một priori và do đó không hoàn toàn giống như của tôi (như tôi không biết trước).
Có phương án nào khác ngoài việc gây quỹ file_name
với (ví dụ) |S9999999999999
(tức là một số giới hạn trên vô lý) không?
đây là một câu hỏi hay. chiều dài 0 dây trong recarrays chỉ có tôi xé tóc của tôi trong nửa giờ! – Christoph