Là kiểu dữ liệu mảng trong python?

Ghi chú.

>>> hasattr(np.array([1, 2, 3]), "__len__")
True
>>> hasattr([1, 2, 3], "__len__")
True
>>> hasattr((1, 2, 3), "__len__")
True
07 cũng hỗ trợ một bộ các lớp, nên tránh đánh dấu vào
>>> hasattr(np.array([1, 2, 3]), "__len__")
True
>>> hasattr([1, 2, 3], "__len__")
True
>>> hasattr((1, 2, 3), "__len__")
True
08 và không cần thiết

Bạn cũng có thể muốn kiểm tra

>>> hasattr(np.array([1, 2, 3]), "__len__")
True
>>> hasattr([1, 2, 3], "__len__")
True
>>> hasattr((1, 2, 3), "__len__")
True
09

Như đã lưu ý bởi và điều này cũng sẽ không hoạt động đối với mảng

>>> hasattr(np.array([1, 2, 3]), "__len__")
True
>>> hasattr([1, 2, 3], "__len__")
True
>>> hasattr((1, 2, 3), "__len__")
True
10. ví dụ

>>> import collections.abc
>>> import numpy as np
>>> isinstance((1, 2, 3), collections.abc.Sequence)
True
>>> isinstance(np.array([1, 2, 3]), collections.abc.Sequence)
False

Trong trường hợp đó, bạn có thể thử câu trả lời từ @ jpaddison3

>>> hasattr(np.array([1, 2, 3]), "__len__")
True
>>> hasattr([1, 2, 3], "__len__")
True
>>> hasattr((1, 2, 3), "__len__")
True

Tuy nhiên, như đã lưu ý, điều này cũng không hoàn hảo và sẽ không chính xác (ít nhất là theo tôi) phân loại từ điển theo trình tự trong khi

>>> hasattr(np.array([1, 2, 3]), "__len__")
True
>>> hasattr([1, 2, 3], "__len__")
True
>>> hasattr((1, 2, 3), "__len__")
True
07 với
>>> import collections.abc
>>> import numpy as np
>>> isinstance((1, 2, 3), collections.abc.Sequence)
True
>>> isinstance(np.array([1, 2, 3]), collections.abc.Sequence)
False
0 phân loại chính xác

>>> hasattr({"a": 1}, "__len__")
True
>>> from numpy.distutils.misc_util import is_sequence
>>> is_sequence({"a": 1})
True
>>> isinstance({"a": 1}, collections.abc.Sequence)
False

Bạn có thể tùy chỉnh giải pháp của mình thành một thứ như thế này, thêm nhiều loại hơn vào

>>> hasattr(np.array([1, 2, 3]), "__len__")
True
>>> hasattr([1, 2, 3], "__len__")
True
>>> hasattr((1, 2, 3), "__len__")
True
07 tùy theo nhu cầu của bạn

Bất cứ khi nào một biến được định nghĩa, trình biên dịch sẽ phân bổ một số bộ nhớ cho biến đó dựa trên kiểu dữ liệu mà nó được khai báo. Mỗi loại dữ liệu yêu cầu một lượng bộ nhớ khác nhau

Tất cả các loại dữ liệu này giữ các giá trị khác nhau tùy thuộc vào loại của chúng. Một số ví dụ được hiển thị dưới đây.  

Loại dữ liệu được sử dụng làm ví dụ Số nguyên Số nguyên. . . , 0, 1, 2, 3,. . . N trong đó N là bất kỳ số nguyên nào Dấu phẩy động Số thập phân Số thực bất kỳ Boolean Biểu thị giá trị logic Ký tự đúng hoặc sai Mã hóa văn bản bằng số

'a', '1' hoặc bất kỳ ký tự nào khác

Ghi chú. Ở đây 1 cũng là một ký tự vì 
nó được đặt giữa các dấu nháy đơn

Cấu trúc dữ liệu là gì?

Cấu trúc dữ liệu là một kho lưu trữ được sử dụng để lưu trữ và sắp xếp dữ liệu. Đó là cách sắp xếp dữ liệu trên máy tính để có thể truy cập và cập nhật dữ liệu một cách hiệu quả. Một cấu trúc dữ liệu không chỉ được sử dụng để tổ chức dữ liệu. Nó cũng được sử dụng để xử lý, truy xuất và lưu trữ dữ liệu. Có nhiều loại cấu trúc dữ liệu cơ bản và nâng cao khác nhau được sử dụng trong hầu hết mọi chương trình hoặc hệ thống phần mềm đã được phát triển. Vì vậy chúng ta phải có kiến ​​thức tốt về cấu trúc dữ liệu.  

Một số ví dụ về cấu trúc dữ liệu là

  • Danh sách liên kết
  • Cây rơm
  • Xếp hàng
  • đồ thị
  • Cây

Mảng là gì?

Mảng là một tập hợp các mục được lưu trữ tại các vị trí bộ nhớ liền kề. Ý tưởng là lưu trữ nhiều mục cùng loại với nhau. Điều này giúp việc tính toán vị trí của từng phần tử trở nên dễ dàng hơn bằng cách thêm một giá trị bù vào giá trị cơ sở, i. e. , vị trí bộ nhớ của phần tử đầu tiên của mảng (thường được biểu thị bằng tên của mảng)

Độ phức tạp về thời gian

thuật toán. trường hợp trung bình trường hợp xấu nhất

truy cập

Ô(1)

Ô(1)

đang tìm kiếm

Trên)

Trên)

chèn vào

Trên)

Trên)

xóa

Trên)

Trên)

Kiểu dữ liệu mảng hay cấu trúc dữ liệu?

Bây giờ vì chúng ta có thông tin cơ bản về cả kiểu dữ liệu và cấu trúc dữ liệu, do đó chúng ta có thể kết luận rằng mảng chắc chắn là một Cấu trúc dữ liệu vì

Nó có thể lưu trữ các giá trị của bất kỳ loại dữ liệu nào mà chúng ta có thể truy cập, xóa và cập nhật các giá trị hiện có, chúng ta cũng có thể thêm các giá trị mới vào đó

Một đối tượng kiểu dữ liệu (một thể hiện của lớp) mô tả cách diễn giải các byte trong khối bộ nhớ có kích thước cố định tương ứng với một mục mảng. Nó mô tả các khía cạnh sau của dữ liệu

  1. Loại dữ liệu (số nguyên, float, đối tượng Python, v.v. )

  2. Kích thước của dữ liệu (có bao nhiêu byte trong e. g. số nguyên)

  3. Thứ tự byte của dữ liệu ( hoặc )

  4. Nếu kiểu dữ liệu là , tập hợp của các kiểu dữ liệu khác, (e. g. , mô tả một mục mảng bao gồm một số nguyên và một số float),

    1. tên của "" của cấu trúc là gì, theo đó chúng có thể là gì,

    2. kiểu dữ liệu của mỗi là gì, và

    3. mỗi trường chiếm phần nào của khối bộ nhớ

  5. Nếu kiểu dữ liệu là mảng con thì hình dạng và kiểu dữ liệu của nó như thế nào

Để mô tả loại dữ liệu vô hướng, có một số trong NumPy cho độ chính xác khác nhau của số nguyên, số dấu phẩy động, v.v. Một mục được trích xuất từ ​​​​một mảng, e. g. , bằng cách lập chỉ mục, sẽ là một đối tượng Python có kiểu là kiểu vô hướng được liên kết với kiểu dữ liệu của mảng

Lưu ý rằng các loại vô hướng không phải là các đối tượng, mặc dù chúng có thể được sử dụng thay cho một đối tượng bất cứ khi nào cần đặc tả kiểu dữ liệu trong NumPy

Các kiểu dữ liệu có cấu trúc được hình thành bằng cách tạo một kiểu dữ liệu có chứa các kiểu dữ liệu khác. Mỗi trường có một tên mà nó có thể được. Kiểu dữ liệu gốc phải đủ kích thước để chứa tất cả các trường của nó; . Các kiểu dữ liệu có cấu trúc cũng có thể chứa các kiểu dữ liệu mảng con có cấu trúc lồng nhau trong các trường của chúng

Cuối cùng, một kiểu dữ liệu có thể mô tả các mục chính là mảng các mục của kiểu dữ liệu khác. Tuy nhiên, các mảng con này phải có kích thước cố định

Nếu một mảng được tạo bằng kiểu dữ liệu mô tả một mảng con, các kích thước của mảng con sẽ được thêm vào hình dạng của mảng khi mảng được tạo. Các mảng con trong một trường thuộc loại có cấu trúc hoạt động khác đi, hãy xem

Các mảng con luôn có bố cục bộ nhớ liền kề C

Ví dụ

Một kiểu dữ liệu đơn giản chứa số nguyên big-endian 32-bit. (xem chi tiết xây dựng)

>>> dt = np.dtype('>i4')
>>> dt.byteorder
'>'
>>> dt.itemsize
4
>>> dt.name
'int32'
>>> dt.type is np.int32
True

Kiểu mảng vô hướng tương ứng là

Ví dụ

Loại dữ liệu có cấu trúc chứa chuỗi 16 ký tự (trong trường 'tên') và một mảng con gồm hai số dấu phẩy động 64 bit (trong trường 'điểm')

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('

Các mục của một mảng thuộc loại dữ liệu này được bao bọc trong một loại cũng có hai trường

>>> x = np.array([('Sarah', (8.0, 7.0)), ('John', (6.0, 7.0))], dtype=dt)
>>> x[1]
('John', [6., 7.])
>>> x[1]['grades']
array([6.,  7.])
>>> type(x[1])

>>> type(x[1]['grades'])

Chỉ định và xây dựng các kiểu dữ liệu

Bất cứ khi nào một kiểu dữ liệu được yêu cầu trong một hàm hoặc phương thức NumPy, thì một đối tượng hoặc thứ gì đó có thể được chuyển đổi thành một đối tượng đều có thể được cung cấp. Việc chuyển đổi như vậy được thực hiện bởi hàm tạo

(dtype[, căn chỉnh, sao chép])

Tạo đối tượng kiểu dữ liệu

Những gì có thể được chuyển đổi thành một đối tượng kiểu dữ liệu được mô tả bên dưới

vật

Được sử dụng nguyên trạng

Không có

Kiểu dữ liệu mặc định.

Kiểu mảng vô hướng

Tất cả 24 tích hợp đều chuyển đổi thành một đối tượng kiểu dữ liệu được liên kết. Điều này cũng đúng với các lớp con của chúng.

Lưu ý rằng không phải tất cả thông tin kiểu dữ liệu đều có thể được cung cấp với đối tượng kiểu. ví dụ: các loại dữ liệu có kích thước mục mặc định là 0 và yêu cầu kích thước được cung cấp rõ ràng để hữu ích

Ví dụ

>>> dt = np.dtype(np.int32)      # 32-bit integer
>>> dt = np.dtype(np.complex128) # 128-bit complex floating-point number

loại chung

Các đối tượng kiểu phân cấp chung chuyển đổi thành các đối tượng kiểu tương ứng theo các liên kết

, ,

,

>>> dt = np.dtype(float)   # Python-compatible floating-point number
>>> dt = np.dtype(int)     # Python-compatible integer
>>> dt = np.dtype(object)  # Python object
2

>>> dt = np.dtype(float)   # Python-compatible floating-point number
>>> dt = np.dtype(int)     # Python-compatible integer
>>> dt = np.dtype(object)  # Python object
3

,

Không dùng nữa kể từ phiên bản 1. 19. Việc chuyển đổi các loại vô hướng chung này không được dùng nữa. Điều này là do nó có thể bất ngờ trong một ngữ cảnh chẳng hạn như

>>> dt = np.dtype(float)   # Python-compatible floating-point number
>>> dt = np.dtype(int)     # Python-compatible integer
>>> dt = np.dtype(object)  # Python object
7, chuyển một mảng của
>>> dt = np.dtype(float)   # Python-compatible floating-point number
>>> dt = np.dtype(int)     # Python-compatible integer
>>> dt = np.dtype(object)  # Python object
8 thành một mảng của
>>> dt = np.dtype(float)   # Python-compatible floating-point number
>>> dt = np.dtype(int)     # Python-compatible integer
>>> dt = np.dtype(object)  # Python object
9, mặc dù
>>> dt = np.dtype(float)   # Python-compatible floating-point number
>>> dt = np.dtype(int)     # Python-compatible integer
>>> dt = np.dtype(object)  # Python object
8 là một kiểu con của
>>> hasattr(np.array([1, 2, 3]), "__len__")
True
>>> hasattr([1, 2, 3], "__len__")
True
>>> hasattr((1, 2, 3), "__len__")
True
41.

Các loại Python tích hợp

Một số loại python tương đương với một mảng vô hướng tương ứng khi được sử dụng để tạo đối tượng

>>> hasattr(np.array([1, 2, 3]), "__len__")
True
>>> hasattr([1, 2, 3], "__len__")
True
>>> hasattr((1, 2, 3), "__len__")
True
55

(tất cả những người khác)

Lưu ý rằng

>>> hasattr(np.array([1, 2, 3]), "__len__")
True
>>> hasattr([1, 2, 3], "__len__")
True
>>> hasattr((1, 2, 3), "__len__")
True
53 đề cập đến byte kết thúc null hoặc chuỗi unicode tùy thuộc vào phiên bản Python. Trong mã nhắm mục tiêu, cả Python 2 và 3
>>> hasattr(np.array([1, 2, 3]), "__len__")
True
>>> hasattr([1, 2, 3], "__len__")
True
>>> hasattr((1, 2, 3), "__len__")
True
59 nên được sử dụng làm kiểu dtype cho chuỗi. Nhìn thấy

Ví dụ

________số 8

Ghi chú

Tất cả các loại khác ánh xạ tới

>>> hasattr(np.array([1, 2, 3]), "__len__")
True
>>> hasattr([1, 2, 3], "__len__")
True
>>> hasattr((1, 2, 3), "__len__")
True
57 để thuận tiện. Mã sẽ mong đợi rằng các loại như vậy có thể ánh xạ tới một loại dtype cụ thể (mới) trong tương lai

Các loại có
>>> import collections.abc
>>> import numpy as np
>>> isinstance((1, 2, 3), collections.abc.Sequence)
True
>>> isinstance(np.array([1, 2, 3]), collections.abc.Sequence)
False
01

Bất kỳ đối tượng loại nào có thuộc tính

>>> x = np.array([('Sarah', (8.0, 7.0)), ('John', (6.0, 7.0))], dtype=dt)
>>> x[1]
('John', [6., 7.])
>>> x[1]['grades']
array([6.,  7.])
>>> type(x[1])

>>> type(x[1]['grades'])

0. Thuộc tính sẽ được truy cập và sử dụng trực tiếp. Thuộc tính phải trả về thứ gì đó có thể chuyển đổi thành đối tượng dtype

Một số loại chuỗi có thể được chuyển đổi. Các chuỗi được nhận dạng có thể được thêm vào trước bằng

>>> import collections.abc
>>> import numpy as np
>>> isinstance((1, 2, 3), collections.abc.Sequence)
True
>>> isinstance(np.array([1, 2, 3]), collections.abc.Sequence)
False
03 (),
>>> import collections.abc
>>> import numpy as np
>>> isinstance((1, 2, 3), collections.abc.Sequence)
True
>>> isinstance(np.array([1, 2, 3]), collections.abc.Sequence)
False
04 () hoặc
>>> import collections.abc
>>> import numpy as np
>>> isinstance((1, 2, 3), collections.abc.Sequence)
True
>>> isinstance(np.array([1, 2, 3]), collections.abc.Sequence)
False
05 (dạng phần cứng, mặc định), để chỉ định thứ tự byte

Chuỗi một ký tự

Mỗi kiểu dữ liệu tích hợp sẵn có một mã ký tự (mã kiểu Số được cập nhật), giúp xác định duy nhất kiểu dữ liệu đó

Ví dụ

>>> hasattr(np.array([1, 2, 3]), "__len__")
True
>>> hasattr([1, 2, 3], "__len__")
True
>>> hasattr((1, 2, 3), "__len__")
True
4

Chuỗi loại giao thức mảng (xem)

Ký tự đầu tiên chỉ định loại dữ liệu và các ký tự còn lại chỉ định số byte cho mỗi mục, ngoại trừ Unicode, được hiểu là số lượng ký tự. Kích thước vật phẩm phải tương ứng với loại hiện có, nếu không sẽ xảy ra lỗi. Các loại được hỗ trợ là

>>> import collections.abc
>>> import numpy as np
>>> isinstance((1, 2, 3), collections.abc.Sequence)
True
>>> isinstance(np.array([1, 2, 3]), collections.abc.Sequence)
False
06

boolean

>>> import collections.abc
>>> import numpy as np
>>> isinstance((1, 2, 3), collections.abc.Sequence)
True
>>> isinstance(np.array([1, 2, 3]), collections.abc.Sequence)
False
07

(đã ký) byte

>>> import collections.abc
>>> import numpy as np
>>> isinstance((1, 2, 3), collections.abc.Sequence)
True
>>> isinstance(np.array([1, 2, 3]), collections.abc.Sequence)
False
08

byte không dấu

>>> import collections.abc
>>> import numpy as np
>>> isinstance((1, 2, 3), collections.abc.Sequence)
True
>>> isinstance(np.array([1, 2, 3]), collections.abc.Sequence)
False
09

(đã ký) số nguyên

>>> hasattr({"a": 1}, "__len__")
True
>>> from numpy.distutils.misc_util import is_sequence
>>> is_sequence({"a": 1})
True
>>> isinstance({"a": 1}, collections.abc.Sequence)
False
00

số nguyên không dấu

>>> hasattr({"a": 1}, "__len__")
True
>>> from numpy.distutils.misc_util import is_sequence
>>> is_sequence({"a": 1})
True
>>> isinstance({"a": 1}, collections.abc.Sequence)
False
01

dấu phẩy động

>>> hasattr({"a": 1}, "__len__")
True
>>> from numpy.distutils.misc_util import is_sequence
>>> is_sequence({"a": 1})
True
>>> isinstance({"a": 1}, collections.abc.Sequence)
False
02

dấu phẩy động phức hợp

>>> hasattr({"a": 1}, "__len__")
True
>>> from numpy.distutils.misc_util import is_sequence
>>> is_sequence({"a": 1})
True
>>> isinstance({"a": 1}, collections.abc.Sequence)
False
03

múi giờ

>>> hasattr({"a": 1}, "__len__")
True
>>> from numpy.distutils.misc_util import is_sequence
>>> is_sequence({"a": 1})
True
>>> isinstance({"a": 1}, collections.abc.Sequence)
False
04

ngày giờ

>>> hasattr({"a": 1}, "__len__")
True
>>> from numpy.distutils.misc_util import is_sequence
>>> is_sequence({"a": 1})
True
>>> isinstance({"a": 1}, collections.abc.Sequence)
False
05

(Trăn) đối tượng

>>> hasattr({"a": 1}, "__len__")
True
>>> from numpy.distutils.misc_util import is_sequence
>>> is_sequence({"a": 1})
True
>>> isinstance({"a": 1}, collections.abc.Sequence)
False
06,
>>> hasattr({"a": 1}, "__len__")
True
>>> from numpy.distutils.misc_util import is_sequence
>>> is_sequence({"a": 1})
True
>>> isinstance({"a": 1}, collections.abc.Sequence)
False
07

byte kết thúc bằng 0 (không được khuyến nghị)

>>> hasattr({"a": 1}, "__len__")
True
>>> from numpy.distutils.misc_util import is_sequence
>>> is_sequence({"a": 1})
True
>>> isinstance({"a": 1}, collections.abc.Sequence)
False
08

chuỗi Unicode

>>> hasattr({"a": 1}, "__len__")
True
>>> from numpy.distutils.misc_util import is_sequence
>>> is_sequence({"a": 1})
True
>>> isinstance({"a": 1}, collections.abc.Sequence)
False
09

dữ liệu thô ()

Ví dụ

>>> hasattr(np.array([1, 2, 3]), "__len__")
True
>>> hasattr([1, 2, 3], "__len__")
True
>>> hasattr((1, 2, 3), "__len__")
True
5

Lưu ý về các loại chuỗi

Để tương thích ngược với Python 2, các kiểu chữ

>>> dt = np.dtype('>i4')
>>> dt.byteorder
'>'
>>> dt.itemsize
4
>>> dt.name
'int32'
>>> dt.type is np.int32
True
11 và
>>> dt = np.dtype('>i4')
>>> dt.byteorder
'>'
>>> dt.itemsize
4
>>> dt.name
'int32'
>>> dt.type is np.int32
True
12 vẫn là các byte không kết thúc và tiếp tục là bí danh. Để sử dụng các chuỗi thực tế trong Python 3, hãy sử dụng
>>> dt = np.dtype('>i4')
>>> dt.byteorder
'>'
>>> dt.itemsize
4
>>> dt.name
'int32'
>>> dt.type is np.int32
True
15 hoặc. Đối với các byte đã ký không cần kết thúc bằng 0, có thể sử dụng
>>> dt = np.dtype('>i4')
>>> dt.byteorder
'>'
>>> dt.itemsize
4
>>> dt.name
'int32'
>>> dt.type is np.int32
True
17 hoặc
>>> dt = np.dtype('>i4')
>>> dt.byteorder
'>'
>>> dt.itemsize
4
>>> dt.name
'int32'
>>> dt.type is np.int32
True
18

Chuỗi có các trường được phân tách bằng dấu phẩy

Ký hiệu viết tắt để chỉ định định dạng của kiểu dữ liệu có cấu trúc là một chuỗi định dạng cơ bản được phân tách bằng dấu phẩy

Một định dạng cơ bản trong ngữ cảnh này là một công cụ xác định hình dạng tùy chọn theo sau là một chuỗi loại giao thức mảng. Dấu ngoặc đơn được yêu cầu trên hình dạng nếu nó có nhiều hơn một chiều. NumPy cho phép sửa đổi định dạng trong đó bất kỳ chuỗi nào có thể xác định loại duy nhất đều có thể được sử dụng để chỉ định loại dữ liệu trong một trường. Các trường kiểu dữ liệu được tạo ra có tên là ________ 419, ________ 500, …, ________ 501 trong đó N (>1) là số định dạng cơ bản được phân tách bằng dấu phẩy trong chuỗi. Nếu công cụ xác định hình dạng tùy chọn được cung cấp, thì kiểu dữ liệu cho trường tương ứng sẽ mô tả một mảng con

Ví dụ

  • trường có tên

    >>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
    >>> dt['name']
    dtype('
    >>> dt['grades']
    dtype(('
    
    02 chứa số nguyên 32 bit

  • trường có tên

    >>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
    >>> dt['name']
    dtype('
    >>> dt['grades']
    dtype(('
    
    03 chứa một mảng con 2 x 3 gồm các số dấu phẩy động 64 bit

  • trường có tên

    >>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
    >>> dt['name']
    dtype('
    >>> dt['grades']
    dtype(('
    
    04 chứa số dấu phẩy động 32 bit

>>> import collections.abc
>>> import numpy as np
>>> isinstance((1, 2, 3), collections.abc.Sequence)
True
>>> isinstance(np.array([1, 2, 3]), collections.abc.Sequence)
False
0

  • trường có tên

    >>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
    >>> dt['name']
    dtype('
    >>> dt['grades']
    dtype(('
    
    02 chứa chuỗi 3 ký tự

  • trường có tên

    >>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
    >>> dt['name']
    dtype('
    >>> dt['grades']
    dtype(('
    
    03 chứa một mảng con có hình dạng (3,) chứa các số nguyên không dấu 64 bit

  • trường có tên

    >>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
    >>> dt['name']
    dtype('
    >>> dt['grades']
    dtype(('
    
    04 chứa một mảng con 3 x 4 chứa các chuỗi 10 ký tự

>>> hasattr({"a": 1}, "__len__")
True
>>> from numpy.distutils.misc_util import is_sequence
>>> is_sequence({"a": 1})
True
>>> isinstance({"a": 1}, collections.abc.Sequence)
False
0

gõ chuỗi

Bất kỳ chuỗi nào trong

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
08. phím()

Ví dụ

>>> dt = np.dtype('>i4')
>>> dt.byteorder
'>'
>>> dt.itemsize
4
>>> dt.name
'int32'
>>> dt.type is np.int32
True
1

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
09

Đối số đầu tiên phải là một đối tượng được chuyển đổi thành đối tượng kiểu dữ liệu linh hoạt có kích thước bằng 0, đối số thứ hai là một số nguyên cung cấp kích thước mục mong muốn

Ví dụ

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
0

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
10

Đối số đầu tiên là bất kỳ đối tượng nào có thể được chuyển đổi thành đối tượng kiểu dữ liệu có kích thước cố định. Đối số thứ hai là hình dạng mong muốn của loại này. Nếu tham số hình dạng là 1, thì đối tượng kiểu dữ liệu được sử dụng tương đương với kiểu cố định. Hành vi này không được dùng nữa kể từ NumPy 1. 17 và sẽ phát sinh lỗi trong tương lai. Nếu hình dạng là một bộ, thì dtype mới xác định một mảng con của hình dạng đã cho

Ví dụ

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
1

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
11

obj phải là một danh sách các trường trong đó mỗi trường được mô tả bằng một bộ có độ dài 2 hoặc 3. (Tương đương với mục

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
12 trong thuộc tính. )

Phần tử đầu tiên, field_name, là tên trường (nếu đây là

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
14 thì tên trường tiêu chuẩn,
>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
15, được chỉ định). Tên trường cũng có thể là 2 bộ chuỗi trong đó chuỗi đầu tiên là "tiêu đề" (có thể là bất kỳ chuỗi hoặc chuỗi unicode nào) hoặc siêu dữ liệu cho trường có thể là bất kỳ đối tượng nào và chuỗi thứ hai là

Phần tử thứ hai, field_dtype, có thể là bất cứ thứ gì có thể hiểu là kiểu dữ liệu

Phần tử thứ ba tùy chọn field_shape chứa hình dạng nếu trường này đại diện cho một mảng kiểu dữ liệu trong phần tử thứ hai. Lưu ý rằng bộ 3 có đối số thứ ba bằng 1 tương đương với bộ 2

Kiểu này không chấp nhận căn chỉnh trong hàm tạo vì người ta cho rằng tất cả bộ nhớ được tính bằng mô tả giao diện mảng

Ví dụ

Kiểu dữ liệu với các trường

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
17 (số nguyên 32 bit cuối lớn) và
>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
18 (số nguyên 32 bit cuối nhỏ)

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
2

Kiểu dữ liệu với các trường

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
19,
>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
20,
>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
21,
>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
22, mỗi trường là số nguyên 8 bit không dấu

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
3

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
23

Kiểu này có hai phím bắt buộc và ba phím tùy chọn. Các khóa tên và định dạng là bắt buộc. Các giá trị tương ứng của chúng là các danh sách có độ dài bằng nhau với tên trường và định dạng trường. Tên trường phải là chuỗi và định dạng trường có thể là bất kỳ đối tượng nào được hàm tạo chấp nhận

Khi các tiêu đề và hiệu số khóa tùy chọn được cung cấp, mỗi giá trị của chúng phải là danh sách có cùng độ dài với danh sách tên và định dạng. Giá trị độ lệch là danh sách các độ lệch byte (giới hạn ở ) cho từng trường, trong khi giá trị tiêu đề là danh sách tiêu đề cho từng trường (có thể sử dụng ____526 nếu không muốn có tiêu đề cho trường đó). Các tiêu đề có thể là bất kỳ đối tượng nào, nhưng khi một đối tượng sẽ thêm một mục nhập khác vào từ điển trường được khóa bởi tiêu đề và tham chiếu đến cùng một bộ trường sẽ chứa tiêu đề dưới dạng thành viên bộ bổ sung

Khóa kích thước vật phẩm cho phép đặt tổng kích thước của dtype và phải là một số nguyên đủ lớn để tất cả các trường nằm trong dtype. Nếu dtype đang được xây dựng được căn chỉnh, kích thước item cũng phải chia hết cho căn chỉnh cấu trúc. Tổng kích thước mục dtype được giới hạn ở

Ví dụ

Kiểu dữ liệu với các trường

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
29,
>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
30,
>>> dt = np.dtype('>i4')
>>> dt.byteorder
'>'
>>> dt.itemsize
4
>>> dt.name
'int32'
>>> dt.type is np.int32
True
17,
>>> dt = np.dtype('>i4')
>>> dt.byteorder
'>'
>>> dt.itemsize
4
>>> dt.name
'int32'
>>> dt.type is np.int32
True
12, mỗi trường là số nguyên không dấu 8 bit

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
4

Kiểu dữ liệu với các trường

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
29 và
>>> dt = np.dtype('>i4')
>>> dt.byteorder
'>'
>>> dt.itemsize
4
>>> dt.name
'int32'
>>> dt.type is np.int32
True
17 (với tiêu đề đã cho), cả hai đều là số nguyên không dấu 8 bit, số đầu tiên ở vị trí byte 0 tính từ đầu trường và số thứ hai ở vị trí 2

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
5

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
35

Cách sử dụng này không được khuyến khích vì nó không rõ ràng với phương pháp xây dựng dựa trên chính tả khác. Nếu bạn có một trường có tên là 'tên' và một trường có tên là 'định dạng' thì sẽ xảy ra xung đột

Kiểu này cho phép truyền vào thuộc tính của đối tượng kiểu dữ liệu

obj phải chứa các khóa chuỗi hoặc unicode đề cập đến các bộ dữ liệu

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
37 hoặc
>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
38

Ví dụ

Kiểu dữ liệu chứa trường

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
39 (chuỗi 10 ký tự ở vị trí byte 0),
>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
40 (dạng float 32 bit ở vị trí byte 10) và
>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
41 (số nguyên ở vị trí byte 14)

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
6

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
42

Trong NumPy 1. 7 trở lên, biểu mẫu này cho phép base_dtype được hiểu là dtype có cấu trúc. Các mảng được tạo bằng dtype này sẽ có dtype base_dtype bên dưới nhưng sẽ có các trường và cờ được lấy từ new_dtype. Điều này hữu ích để tạo các kiểu dữ liệu có cấu trúc tùy chỉnh, như được thực hiện trong

Biểu mẫu này cũng cho phép chỉ định các kiểu cấu trúc với các trường chồng chéo, hoạt động giống như kiểu 'union' trong C. Tuy nhiên, việc sử dụng này không được khuyến khích và cơ chế hợp nhất được ưa thích hơn

Cả hai đối số phải được chuyển đổi thành các đối tượng kiểu dữ liệu có cùng kích thước

Ví dụ

Số nguyên 32 bit, có hai byte đầu tiên được hiểu là số nguyên qua trường

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
43 và hai byte sau qua trường
>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
44

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
7

Số nguyên 32 bit, được hiểu là bao gồm một mảng con có hình dạng

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
45 chứa các số nguyên 8 bit

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
8

Số nguyên 32 bit, chứa các trường

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
29,
>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
30,
>>> dt = np.dtype('>i4')
>>> dt.byteorder
'>'
>>> dt.itemsize
4
>>> dt.name
'int32'
>>> dt.type is np.int32
True
17,
>>> dt = np.dtype('>i4')
>>> dt.byteorder
'>'
>>> dt.itemsize
4
>>> dt.name
'int32'
>>> dt.type is np.int32
True
12 hiểu 4 byte trong số nguyên là bốn số nguyên không dấu

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
9

Mô tả kiểu dữ liệu NumPy là thể hiện của lớp

Thuộc tính

Loại dữ liệu được mô tả bởi các thuộc tính sau

Mã ký tự (một trong số 'biufcmMOSUV') xác định loại dữ liệu chung

Một mã ký tự duy nhất cho mỗi trong số 21 loại tích hợp khác nhau

Một số duy nhất cho mỗi trong số 21 loại tích hợp khác nhau

Chuỗi kiểu giao thức mảng của đối tượng kiểu dữ liệu này

Kích thước của dữ liệu lần lượt được mô tả bởi

Tên độ rộng bit cho loại dữ liệu này

Kích thước phần tử của đối tượng kiểu dữ liệu này

Độ bền của dữ liệu này

Một ký tự cho biết thứ tự byte của đối tượng kiểu dữ liệu này

Thông tin về các kiểu dữ liệu con trong một

Từ điển các trường được đặt tên được xác định cho loại dữ liệu này hoặc

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
26

Danh sách tên trường được sắp xếp theo thứ tự hoặc

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
26 nếu không có trường nào

Đối với các kiểu dữ liệu mô tả các mảng con

Tuple

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
66 nếu điều này mô tả một mảng con và Không có gì khác

Bộ định dạng của mảng con nếu kiểu dữ liệu này mô tả một mảng con và

>>> dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
>>> dt['name']
dtype('
>>> dt['grades']
dtype(('
69 nếu không thì

Thuộc tính cung cấp thông tin bổ sung

Boolean cho biết liệu dtype này có chứa bất kỳ đối tượng được tính tham chiếu nào trong bất kỳ trường hoặc sub-dtypes nào không

Mảng có phải là một kiểu dữ liệu không?

Kiểu mảng là kiểu dữ liệu do người dùng định nghĩa bao gồm một tập hợp có thứ tự các phần tử của một kiểu dữ liệu. Một kiểu mảng thông thường có giới hạn trên được xác định về số lượng phần tử và sử dụng vị trí thứ tự làm chỉ số mảng.

Mảng Dtype trong Python là gì?

lớp dtype) mô tả cách diễn giải các byte trong khối bộ nhớ có kích thước cố định tương ứng với một mục mảng . Nó mô tả các khía cạnh sau của dữ liệu. Loại dữ liệu (số nguyên, float, đối tượng Python, v.v. )

7 kiểu dữ liệu trong Python là gì?

Một số kiểu dữ liệu Python tích hợp sẵn là. .
Kiểu dữ liệu số. int, float, phức tạp
Kiểu dữ liệu chuỗi. str
các loại trình tự. danh sách, tuple, phạm vi
loại nhị phân. byte, bytearray, memoryview
Loại dữ liệu ánh xạ. mệnh lệnh
kiểu Boolean. bool
Đặt kiểu dữ liệu. bộ, bộ đóng băng. Kiểu dữ liệu số Python

4 kiểu dữ liệu trong Python là gì?

Sau đây là kiểu dữ liệu chuẩn hoặc tích hợp sẵn của Python. .
số
Loại trình tự
Boolean
Từ điển