NumPy có một số loại dữ liệu bổ sung và đề cập đến các loại dữ liệu có một ký tự, như i cho số nguyên, u cho số nguyên không dấu, v.v.
Dưới đây là danh sách tất cả các loại dữ liệu trong NumPy và các ký tự được sử dụng để thể hiện chúng
- i - số nguyên
- b - boolean
- u - số nguyên không dấu
- strings1 - nổi
- strings2 - phao phức tạp
- strings3 - múi giờ
- strings4 - ngày giờ
- strings5 - đối tượng
- strings6 - chuỗi
- strings7 - chuỗi unicode
- strings8 - đoạn bộ nhớ cố định cho loại khác ( void )
Kiểm tra kiểu dữ liệu của một mảng
Đối tượng mảng NumPy có một thuộc tính gọi là strings9 trả về kiểu dữ liệu của mảng
Ví dụ
Lấy kiểu dữ liệu của một đối tượng mảng
nhập numpy dưới dạng np
mảng = np. mảng([1, 2, 3, 4])
in (mảng. dtype)
Tự mình thử »Ví dụ
Lấy kiểu dữ liệu của một mảng chứa chuỗi
nhập numpy dưới dạng np
mảng = np. mảng (['táo', 'chuối', 'anh đào'])
in (mảng. dtype)
Tự mình thử »Tạo mảng với kiểu dữ liệu đã xác định
Chúng ta sử dụng hàm integer0 để tạo mảng, hàm này có thể nhận đối số tùy chọn. strings9 cho phép chúng ta xác định kiểu dữ liệu dự kiến của các phần tử mảng
Ví dụ
Tạo mảng với kiểu dữ liệu string
nhập numpy dưới dạng np
mảng = np. mảng([1, 2, 3, 4], dtype='S')
in (mảng)
in (mảng. dtype)
Đối với i, u, strings1, strings6 và strings7, chúng tôi cũng có thể xác định kích thước
Ví dụ
Tạo một mảng có kiểu dữ liệu là số nguyên 4 byte
nhập numpy dưới dạng np
mảng = np. mảng([1, 2, 3, 4], dtype='i4')
in (mảng)
in (mảng. dtype)
Điều gì xảy ra nếu một giá trị không thể được chuyển đổi?
Nếu một loại được đưa ra trong đó các phần tử không thể được truyền thì NumPy sẽ tăng ValueError
Giá trịError. Trong Python ValueError được nâng lên khi loại đối số được truyền cho một hàm không mong muốn/không chính xác
Ví dụ
Không thể chuyển đổi một chuỗi không phải số nguyên như 'a' thành số nguyên (sẽ gây ra lỗi)
nhập numpy dưới dạng np
mảng = np. mảng (['a', '2', '3'], dtype='i')
Tự mình thử »Chuyển đổi kiểu dữ liệu trên các mảng hiện có
Cách tốt nhất để thay đổi kiểu dữ liệu của một mảng hiện có là tạo một bản sao của mảng bằng phương thức integer7
Hàm integer7 tạo một bản sao của mảng và cho phép bạn chỉ định loại dữ liệu làm tham số
Kiểu dữ liệu có thể được chỉ định bằng cách sử dụng một chuỗi, như integer9 cho số float, float0 cho số nguyên, v.v. hoặc bạn có thể sử dụng kiểu dữ liệu trực tiếp như float cho số float và float2 cho số nguyên
Mô-đun này xác định một loại đối tượng có thể biểu diễn gọn một mảng các giá trị cơ bản. ký tự, số nguyên, số dấu phẩy động. Mảng là kiểu dãy và hoạt động rất giống với danh sách, ngoại trừ kiểu đối tượng được lưu trữ trong chúng bị hạn chế. Loại được chỉ định tại thời điểm tạo đối tượng bằng cách sử dụng mã loại, là một ký tự đơn. Các loại mã sau đây được xác định
loại mã
Loại C
Loại trăn
Kích thước tối thiểu tính bằng byte
ghi chú
'b'
ký tự
int
1
'B'
ký tự không dấu
int
1
'u'
wchar_t
Ký tự Unicode
2
(1)
'h'
ký tắt
int
2
'H'
ngắn không dấu
int
2
'i'
ký int
int
2
'I'
int không dấu
int
2
'l'
ký dài
int
4
array0
không dấu dài
int
4
array1
đã ký lâu dài
int
8
array2
lâu dài không dấu
int
8
array3
trôi nổi
trôi nổi
4
array4
gấp đôi
trôi nổi
8
ghi chú
Nó có thể là 16 bit hoặc 32 bit tùy thuộc vào nền tảng
Đã thay đổi trong phiên bản 3. 9. array5 hiện sử dụng array6 làm loại C thay vì không dùng nữa array7. Thay đổi này không ảnh hưởng đến hành vi của nó vì array7 là bí danh của array6 kể từ Python 3. 3.
Không dùng nữa kể từ phiên bản 3. 3, sẽ bị xóa trong phiên bản 4. 0
Biểu diễn thực tế của các giá trị được xác định bởi kiến trúc máy (nói đúng ra là do triển khai C). Kích thước thực tế có thể được truy cập thông qua thuộc tính
Mô-đun xác định mục sau
mảng. mã chữMột chuỗi với tất cả các mã loại có sẵn
Mô-đun xác định loại sau
lớp mảng. mảng(mã loại[ , initializer])Một mảng mới có các mục bị giới hạn bởi mã kiểu và được khởi tạo từ giá trị khởi tạo tùy chọn, phải là một danh sách, a hoặc có thể lặp qua các phần tử thuộc loại thích hợp
Nếu được cung cấp một danh sách hoặc chuỗi, trình khởi tạo được chuyển đến phương thức, hoặc phương thức của mảng mới (xem bên dưới) để thêm các phần tử ban đầu vào mảng. Mặt khác, trình khởi tạo lặp lại được truyền cho phương thức
Các đối tượng mảng hỗ trợ các hoạt động trình tự thông thường của lập chỉ mục, cắt, nối và nhân. Khi sử dụng phép gán lát, giá trị được gán phải là một đối tượng mảng có cùng mã loại; . Các đối tượng mảng cũng triển khai giao diện bộ đệm và có thể được sử dụng ở bất kỳ đâu được hỗ trợ
Đưa ra một 'b'6 với các đối số 'b'7, 'b'8
đánh máyKý tự mã loại được sử dụng để tạo mảng
kích thước mụcĐộ dài tính bằng byte của một mục mảng trong biểu diễn bên trong
chắp thêm(x)Nối một mục mới có giá trị x vào cuối mảng
buffer_info()Trả về một tuple 'b'9 cung cấp địa chỉ bộ nhớ hiện tại và độ dài trong các phần tử của bộ đệm được sử dụng để chứa nội dung của mảng. Kích thước của bộ nhớ đệm theo byte có thể được tính là 'B'0. Điều này đôi khi hữu ích khi làm việc với các giao diện I/O cấp thấp (và vốn không an toàn) yêu cầu địa chỉ bộ nhớ, chẳng hạn như một số hoạt động 'B'1. Các số được trả về có giá trị miễn là mảng tồn tại và không có thao tác thay đổi độ dài nào được áp dụng cho nó
Ghi chú
Khi sử dụng các đối tượng mảng từ mã được viết bằng C hoặc C++ (cách duy nhất để sử dụng thông tin này một cách hiệu quả), sẽ hợp lý hơn khi sử dụng giao diện bộ đệm được hỗ trợ bởi các đối tượng mảng. Phương pháp này được duy trì để tương thích ngược và nên tránh trong mã mới. Giao diện bộ đệm được ghi lại trong
hoán đổi byte()“Hoán đổi byte” tất cả các mục của mảng. Điều này chỉ được hỗ trợ cho các giá trị có kích thước 1, 2, 4 hoặc 8 byte; . Nó rất hữu ích khi đọc dữ liệu từ một tệp được ghi trên máy có thứ tự byte khác
đếm(x)Trả về số lần xuất hiện của x trong mảng
mở rộng(có thể lặp lại)Nối các mục từ iterable vào cuối mảng. Nếu iterable là một mảng khác, thì nó phải có cùng mã loại; . Nếu iterable không phải là một mảng, thì nó phải là iterable và các phần tử của nó phải đúng loại để được thêm vào mảng
từ byte(s)Nối thêm các mục từ chuỗi, diễn giải chuỗi dưới dạng một mảng các giá trị máy (như thể nó đã được đọc từ một tệp bằng phương thức này)
Mới trong phiên bản 3. 2. ______29_______5 được đổi tên thành cho rõ ràng.
từ tệp(f , n)Đọc n mục (dưới dạng giá trị máy) từ f và nối chúng vào cuối mảng. Nếu có ít hơn n mục, được nâng lên, nhưng các mục có sẵn vẫn được chèn vào mảng
từ danh sách(danh sách)Nối các mục từ danh sách. Điều này tương đương với 'B'8 ngoại trừ nếu có lỗi kiểu, mảng sẽ không thay đổi
fromunicode(s)Mở rộng mảng này với dữ liệu từ chuỗi unicode đã cho. Mảng phải là một mảng kiểu 'u'; . Sử dụng 'u'1 để nối dữ liệu Unicode vào một mảng thuộc loại khác
index(x[ , start[, stop]])Trả về i nhỏ nhất sao cho i là chỉ số của lần xuất hiện đầu tiên của x trong mảng. Các đối số tùy chọn bắt đầu và dừng có thể được chỉ định để tìm kiếm x trong phần con của mảng. Tăng nếu không tìm thấy x
Đã thay đổi trong phiên bản 3. 10. Đã thêm tham số bắt đầu và dừng tùy chọn.
insert(i , x)Chèn một mục mới có giá trị x vào mảng trước vị trí i. Các giá trị âm được coi là có liên quan đến phần cuối của mảng
pop([i])Loại bỏ mục có chỉ số i khỏi mảng và trả về nó. Đối số tùy chọn mặc định là 'u'3, do đó, theo mặc định, mục cuối cùng được xóa và trả lại
xóa(x)Xóa lần xuất hiện đầu tiên của x khỏi mảng
đảo ngược()Đảo ngược thứ tự các phần tử trong mảng
tobyte()Chuyển đổi mảng thành một mảng các giá trị máy và trả về biểu diễn byte (cùng một chuỗi byte sẽ được ghi vào tệp theo phương thức. )
Mới trong phiên bản 3. 2. ______30_______5 được đổi tên thành cho rõ ràng.
tofile(f)Ghi tất cả các mục (dưới dạng giá trị máy) vào f
tolist()Chuyển đổi mảng thành một danh sách bình thường với các mục giống nhau
tounicode()Chuyển đổi mảng thành chuỗi unicode. Mảng phải là một mảng kiểu 'u'; . Sử dụng 'u'9 để lấy chuỗi unicode từ một mảng thuộc loại khác
Khi một đối tượng mảng được in hoặc chuyển đổi thành một chuỗi, nó được biểu diễn dưới dạng 'h'0. Trình khởi tạo bị bỏ qua nếu mảng trống, nếu không thì nó là một chuỗi nếu mã kiểu là 'u', nếu không thì nó là một danh sách các số. Chuỗi được đảm bảo có thể được chuyển đổi trở lại thành một mảng có cùng loại và giá trị bằng cách sử dụng , miễn là lớp đã được nhập bằng cách sử dụng 'h'4. ví dụ
array('l') array('u', 'hello \u2641') array('l', [1, 2, 3, 4, 5]) array('d', [1.0, 2.0, 3.14])
Xem thêm
mô-đunĐóng gói và giải nén dữ liệu nhị phân không đồng nhất
mô-đunĐóng gói và giải nén dữ liệu Biểu diễn dữ liệu ngoài (XDR) như được sử dụng trong một số hệ thống gọi thủ tục từ xa