Trong NumPy, tôi có thể nhận được kích thước (tính theo byte) của một kiểu dữ liệu cụ thể bằng cách:Kích thước của kiểu dữ liệu sử dụng NumPy
datatype(...).itemsize
hay:
datatype(...).nbytes
Ví dụ:
np.float32(5).itemsize #4
np.float32(5).nbytes #4
Tôi có hai câu hỏi. Đầu tiên, có cách nào để lấy thông tin này mà không cần tạo một cá thể của kiểu dữ liệu không? Thứ hai, sự khác biệt giữa itemsize
và nbytes
là gì?
Câu trả lời hay. Trong thực tế, tôi không sử dụng một mảng tại thời điểm này. Trong trường hợp sử dụng thực của tôi, tôi có định dạng datafile dựa trên bản ghi - Nó có tiêu đề với 240 byte và sau đó là dữ liệu. Kích thước của dữ liệu được xác định bởi số lượng các phần tử (được đọc từ phần đầu) nhưng kiểu dữ liệu không được lưu trữ :-(Cuối cùng, tôi muốn người dùng có thể vượt qua 'dtype = ... 'và từ kiểu dữ liệu đó, tôi lấy sizeof của mỗi phần tử dữ liệu và vì vậy tôi có thể biết kích thước của dữ liệu. Bằng cách đó, tôi có thể tìm kiếm bất kỳ bản ghi nào trong tệp và đọc nó trực tiếp. 'là cách để đi ... cảm ơn. – mgilson
FWIW, Có vẻ khó hiểu rằng' nbyte' sẽ là một thể hiện của kiểu dữ liệu khi nó thực sự chỉ hữu ích trong một mảng ... Tất nhiên, tôi cho rằng tôi không 't biết mô hình dữ liệu gumpy cũng đủ để bình luận về điều đó quá nhiều ... Dù sao, cảm ơn.Đây là những gì tôi cần thiết – mgilson
Tôi đồng ý, scalars của numpy (ví dụ như 'np.float32 (5)') có thể gây nhầm lẫn. sự khác biệt giữa một vô hướng sần và một mảng numpy 0-d (ví dụ 'np.array (5, dtype = np.float32)') thậm chí còn khó hiểu hơn (Thử lập chỉ mục mảng 0-d!) ha có các thuộc tính giống như một ndarray bình thường là những thứ như 'x [5].abs() 'sẽ hoạt động chính xác cho các mảng 1d. Nó có ý nghĩa trong "bức tranh rộng hơn" nhưng nó gây ra rất nhiều sự nhầm lẫn. –