Đối tượng kiểu dữ liệu 'dtype' là một thực thể (instance) của lớp numpy.dtype. Nó có thể được tạo ra qua numpy.dtype. Cho đến nay, chúng ta đã sử dụng trong các ví dụ của chúng ta về các mảng numpy chỉ các kiểu dữ liệu cơ bản như 'int' và 'float'. Các mảng numpy chỉ chứa kiểu dữ liệu đồng nhất. Các đối tượng dtype được tạo bằng cách kết hợp các kiểu dữ liệu cơ bản. Với sự trợ giúp của dtype chúng tôi có khả năng để tạo ra "Structured Arrays", - còn được gọi là "Record Arrays". Các mảng có cấu trúc cung cấp cho chúng ta khả năng có các loại dữ liệu khác nhau cho mỗi cột. Nó có tính tương đồng với cấu trúc của excel. Vì vậy, chúng ta có thể xác định dữ liệu giống như trong bảng “Total Medals vs Population“ sau:
Trước khi bắt đầu với một dữ liệu phức tạp như dữ liệu trước đó, tôi muốn giới thiệu dtype trong một ví dụ đơn giản hơn. Chúng ta định nghĩa một kiểu dữ liệu int16 và gọi kiểu này là i16. (nó không phải là một cái tên đẹp, nhưng chúng ta chỉ sử dụng nó ở đây!). Các phần tử của danh sách 'lst' được biến thành kiểu i16 để tạo ra mảng A hai chiều.
Tất cả những gì chúng tôi làm trong ví dụ trước là giới thiệu một tên mới cho một kiểu dữ liệu cơ bản. Điều này không liên quan gì đến các mảng có cấu trúc"Structured Arrays", chúng tôi đã đề cập trong phần giới thiệu của chương này về dtype. Bây giờ chúng tôi sẽ tiến hành bước đầu tiên để thực hiện thao tác với bảng “Total Medals vs Population“. Chúng tôi tạo một mảng có cấu trúc với cột ‘density'. Kiểu dữ liệu được định nghĩa là np.dtype ([('density', np.int)]). Chúng tôi gán kiểu dữ liệu này cho biến 'dt' để thuận tiện. Chúng tôi sử dụng kiểu dữ liệu này trong định nghĩa darray. Và, chúng ta có thể truy cập nội dung của cột “density” bằng cách như là một index của mảng x. Có vẻ giống như truy cập vào một dictionary trong Python.
khi định nghĩa kiểu dữ liệu từ kiểu dữ liệu cơ bản, ngoài cách viết tường minh np.int32, np.int16 ta có thể dùng một string tương ứng sau để biểu diễn “i4”, “i2”. Ở đây ‘i’ để thể hiện kiểu ‘int’ còn 4 hay 2 thể hiện là số bytes. Chúng ta có thể đặt trước một loại có ký hiệu '<' và '>'. '<' Có nghĩa là mã hóa sẽ là little-endian và '>' có nghĩa là mã hóa là mã big-endian. Không có tiền tố có nghĩa là chúng ta sử dụng kiểu mặc định. Qua ví dụ sau sẽ chứng minh điều này. ‘=’ tức là ‘little-endian’, ‘d’ tức là double. Ví dụ.
Chúng ta sẽ định nghĩa kiểu dữ liệu cho bảng “Total Medals vs Population“ phía trên, và biểu diễn dữ liệu đó như ví dụ sau:
Kết luận Đối tượng kiểu dữ liệu 'dtype' thường dùng như một đối số của một số hàm trong thư viện numpy (ví dụ như numpy.random, numpy.array,…). Nó có thể được tạo ra qua numpy.dtype. Với sự trợ giúp của dtype chúng ta có thể tạo ra các mảng có cấu trúc và khả năng có các loại dữ liệu khác nhau cho mỗi cột trong mảng. Một số kiểu dữ liệu cơ bản, thường dùng như np.int64, np.int32, np.int, np.float64 … với byteorder của mỗi kiểu sẽ là litte-endian (‘<’) hay big-endian (‘>’). |