Loại vectơ Python

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)

Tự mình thử »

Đố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)

Tự mình thử »

Đ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ú

  1. 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áy

Ký 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

Loại vectơ trong Python là gì?

Đầu tiên, Vectơ là gì? . Đối với Python, một vectơ là mảng một chiều gồm các danh sách . Nó chiếm các phần tử theo cách tương tự như danh sách Python.

Python có lớp vectơ không?

Mặc dù NumPy cung cấp tùy chọn nhanh hơn, nhưng việc viết mã một lớp cho vectơ bằng Python thuần vẫn là một hướng dẫn . Đoạn mã sau định nghĩa lớp Vector2D và kiểm tra nó cho các hoạt động khác nhau.

Làm cách nào để viết véc tơ bằng Python?

Để tạo một vectơ, chúng tôi sử dụng np. phương thức mảng . Ghi chú. Chúng ta cũng có thể tạo vectơ bằng phương thức khác, trả về mảng numpy 1-D, ví dụ np. sắp xếp (10), np.

Vectơ trong Python NumPy là gì?

Lớp NumPy ndarray được sử dụng để biểu diễn cả ma trận và vectơ. Vectơ là mảng có một chiều (không có sự khác biệt giữa vectơ hàng và cột), trong khi ma trận đề cập đến một mảng có hai chiều. Đối với các mảng chiều 3-D hoặc cao hơn, thuật ngữ tensor cũng thường được sử dụng.

Chủ đề