Computer >> Máy Tính >  >> Lập trình >> Python

NumPy Array:Hướng dẫn cho người mới bắt đầu

Danh sách là một kiểu dữ liệu chứa một chuỗi các phần tử có thứ tự. Danh sách là một kiểu dữ liệu hữu ích vì chúng cho phép bạn lưu trữ nhiều giá trị có liên quan trong một biến. Với một danh sách, bạn có thể lưu trữ tên của 10 đôi giày trong một biến; bạn có thể lưu trữ danh sách các giao dịch mua bạn đã thực hiện tại một cửa hàng trong một biến.

Mặc dù kiểu dữ liệu danh sách tích hợp sẵn đã rất mạnh, nhưng đối với các trường hợp sử dụng nâng cao hơn, bạn có thể thấy thiếu. Đó là nơi xuất hiện kiểu dữ liệu mảng của NumPy. Thư viện NumPy có thể được sử dụng để tạo mảng có nhiều thứ nguyên một cách dễ dàng.

Trong hướng dẫn này, chúng ta sẽ nói về mảng NumPy là gì, tại sao chúng hữu ích và cách bạn có thể làm việc với chúng trong mã của mình. Hãy bắt đầu!

Mảng NumPy là gì?

Mảng NumPy là đối tượng mảng được sử dụng trong thư viện Python NumPy. NumPy, viết tắt của Numerical Python, là một gói thường được sử dụng cho tính toán khoa học và toán học. Nó đi kèm với một loạt các công cụ có thể hỗ trợ phân tích dữ liệu và toán học nâng cao.

Trong vanilla Python (Python không có bất kỳ gói bên ngoài nào), các mảng rất mạnh nhưng chúng có thể xử lý chậm. Mặt khác, các mảng NumPy hướng đến việc có các đơn hàng có độ lớn nhanh hơn so với một mảng Python truyền thống.

Việc tăng hiệu suất này được thực hiện bởi vì mảng NumPy lưu trữ các giá trị ở một nơi liên tục trong bộ nhớ. Điều này giúp Python dễ dàng truy cập và thao tác một danh sách.

Cách khai báo mảng NumPy

Để bắt đầu, hãy thiết lập một mảng NumPy. Đối với hướng dẫn này, chúng tôi sẽ lưu trữ các giá trị chuỗi trong mảng của chúng tôi. Các giá trị chuỗi này là danh sách các món ngọt được cung cấp tại một quán cà phê địa phương. Chúng tôi sẽ bắt đầu bằng cách nhập thư viện NumPy:

import numpy as np

Dòng mã này nhập numpy từ Python và gán cho thư viện tên np . Điều này có nghĩa là bất cứ khi nào chúng ta cần làm việc với mảng của mình, chúng ta chỉ cần gọi np .

81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.

Sinh viên tốt nghiệp bootcamp trung bình đã dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.

Tiếp theo, chúng ta sẽ khai báo mảng của mình bằng giao diện mảng:

treats = np.array(["Blueberry Muffin", "Cinnamon Bun", "Jammy Shortbread"])
print(treats)

Mảng của chúng tôi chứa bốn giá trị chuỗi. Giống như một mảng Python truyền thống, chúng tôi đã đặt tất cả các mục trong danh sách của mình trong dấu ngoặc vuông. Để khai báo một mảng NumPy, chúng tôi đã sử dụng phương thức mảng là một phần của np . Điều này tạo ra một ndarray đối tượng, là kiểu mảng NumPy dựng sẵn.

Mã của chúng tôi trả về một bản sao của mảng ban đầu của chúng tôi, được coi là mảng NumPy:

['Blueberry Muffin' 'Cinnamon Bun' 'Jammy Shortbread']

Vậy là xong:chúng tôi hiện có một mảng mà chúng tôi có thể làm việc cùng.

Mảng NumPy:Kích thước

Khi chúng ta nói về các thứ nguyên trong NumPy, chúng ta không muốn nói đến những thế giới mới như bạn sẽ thấy trong phim. Một thứ nguyên trong một mảng là một mức độ sâu trong mảng đó. Khi thứ nguyên thuật ngữ được sử dụng, nó đề cập đến các mảng lồng nhau. Đây là những mảng chứa mảng.

Một mảng có thể có bất kỳ số thứ nguyên nào. Hầu hết các mảng mà bạn sẽ làm việc sẽ là mảng 1-D, 2-D hoặc 3-D. Chữ "D" là viết tắt của thứ nguyên.

Mảng 1-D NumPy

Trong ví dụ đầu tiên của chúng tôi, chúng tôi đã tạo một mảng 1-D. Đây là một mảng chứa các mảng 0-D (hoặc các mục) làm phần tử của nó. Hầu hết các mảng mà bạn sẽ làm việc sẽ là 1-D.

Hãy tạo một mảng lưu trữ giá của các món ăn tại quán cà phê:

import numpy as np

prices = np.array([1.95, 2.00, 2.05])
print(prices)

Mã của chúng tôi trả về một mảng trong một chiều, lưu trữ các giá trị của chúng tôi:[1.95 2. 2.05].

Để truy cập một phần tử từ mảng 1-D, bạn có thể sử dụng cú pháp giống như cách bạn làm với danh sách Python. Hãy truy xuất mục thứ hai trong danh sách của chúng tôi:

print(prices[1])

Mã của chúng tôi trả về mục có giá trị chỉ mục 1, là:2.

Để tìm hiểu thêm về mảng Python, hãy đọc hướng dẫn dành cho người mới bắt đầu của chúng tôi về mảng Python.

Mảng 2-D NumPy

Không phải tất cả các mảng đều là 1-D. Giả sử rằng chúng ta muốn lưu trữ một mảng chứa hai mảng. Một mảng lưu trữ các món ngọt được bán tại quán cà phê; mảng còn lại lưu trữ danh sách các loại cà phê được bán tại quán. Cùng với nhau, đây là một phần của menu items mảng.

Hãy tạo mảng này bằng NumPy:

import numpy as np

menu_items = np.array([
	["Blueberry Muffin", "Cinnamon Bun", "Jammy Shortbread"],
	["Cappuccino", "Espresso", "Mocha"]
])

print(menu_items)

Mảng kết quả là:

[['Blueberry Muffin' 'Cinnamon Bun' 'Jammy Shortbread']
 ['Cappuccino' 'Espresso' 'Mocha']]

Mảng mới tạo của chúng tôi có hai thứ nguyên. Mảng đầu tiên trong mảng của chúng ta chứa một danh sách các món ngon; mảng thứ hai chứa danh sách các loại cà phê. Lưu ý rằng cả hai mảng này được đặt trong một cặp dấu ngoặc vuông nối hai mảng.

Việc truy xuất các mục từ mảng 2-D hoạt động hơi khác trong NumPy so với trong Python. Để truy cập các phần tử từ mảng 2-D, bạn cần tách các số chỉ mục của giá trị mà bạn muốn truy xuất từ ​​mảng.

Hãy xem xét mã này:

print(menu_items[0, 2])

Mã của chúng tôi trả về:Jammy Shortbread. Chúng tôi đã truy xuất mặt hàng có giá trị chỉ số 2 được lưu trữ bên trong mảng với giá trị chỉ mục 0. Trong trường hợp này, chúng ta đã truy xuất mặt hàng cuối cùng trong mảng lưu trữ đồ ngọt được bán tại quán cà phê.

Mảng 3-D NumPy

Hãy thêm vào một không gian khác! Mảng NumPy có thể chứa mảng 3-D. Đây là một mảng chứa các mảng 2-D.

Giả sử rằng chúng ta muốn lưu trữ các giá trị sau:

  • Đồ ăn ngọt và đồ ăn không ngọt (được ghép đôi nhưng theo từng mảng riêng biệt); và
  • Đồ uống có chứa cafein và đồ uống không chứa cafein (được ghép đôi, theo từng mảng riêng biệt);

Tất cả các giá trị này nên được lưu trữ trong một mảng. Kích thước của mảng này là:

  • 1-D:Tất cả các mục trong menu
  • 2-D:Ngọt ngào thực phẩm không ngọt, có chứa caffein đồ uống không chứa caffein
  • 3-D:Đồ ăn ngọt, đồ ăn không ngọt, đồ uống có chứa cafein, không chứa cafein

Hãy tạo mảng này bằng NumPy. Dán đoạn mã sau vào tệp Python:

import numpy as np

menu_items = np.array([
	[
		["Blueberry Muffin", "Cinnamon Bun", "Jammy Shortbread"],
		["Smoked Bacon Roll", "Tuna Melt Panini", "Cheese and Tomato Toastie"]
	],
	[
		["Cappuccino", "Espresso", "Mocha"],
		["Apple Juice", "Water", "Orange Juice"]
	]
])

print(menu_items)

Mã của chúng tôi trả về:

[[['Blueberry Muffin' 'Cinnamon Bun' 'Jammy Shortbread']
  ['Smoked Bacon Roll' 'Tuna Melt Panini' 'Cheese and Tomato Toastie']]

 [['Cappuccino' 'Espresso' 'Mocha']
  ['Apple Juice' 'Water' 'Orange Juice']]]

Chúng tôi đã tạo một mảng 3-D với tất cả thông tin mà chúng tôi đã thảo luận trước đó. Mảng này là một danh sách tổng hợp tất cả các món trong thực đơn được cung cấp bởi quán cà phê.

Việc truy cập các mục từ mảng 3-D hoạt động tương tự như cú pháp bạn sử dụng để truy cập các mục từ mảng 2-D. Sự khác biệt là bạn phải chỉ định số chỉ mục thứ ba để truy xuất một mục từ mảng 3-D. Hãy truy xuất “Mocha” từ mảng của chúng ta:

print(menu_items[1, 0, 2])

Mã của chúng tôi trả về:Mocha.

1 là số chỉ mục của thứ nguyên thứ nhất mà chúng tôi muốn truy cập (1 tương ứng với đồ uống của chúng tôi); 0 là chỉ số của chiều thứ 2 (0 tương ứng với đồ uống có chứa caffein); 2 là số chỉ mục của thứ nguyên thứ 3 (2 tương ứng với Mocha).

Đếm kích thước trong một mảng

Mảng NumPy có thể bắt đầu trông khá phức tạp khi bạn bắt đầu thêm các thứ nguyên mới. Chúng tôi thậm chí chưa khám phá các mảng có nhiều hơn ba chiều! May mắn cho bạn, có một phím tắt hữu ích mà bạn có thể sử dụng để tính toán một mảng có bao nhiêu thứ nguyên.

Dán đoạn mã sau vào tệp Python:

import numpy as np

menu_items = np.array([
	["Blueberry Muffin", "Cinnamon Bun", "Jammy Shortbread"],
	["Cappuccino", "Espresso", "Mocha"]
])

print(menu_items.ndim)

Hãy chạy mã của chúng tôi. Giá trị “2” được trả về. Điều này cho chúng ta biết rằng mảng của chúng ta chứa hai thứ nguyên, mà chúng ta có thể thấy là đúng bằng cách phân tích mảng ở trên của chúng ta.

Kết luận

Mảng NumPy là một cách linh hoạt để lưu trữ các giá trị tương tự. Chúng nhanh hơn và hiệu quả hơn các mảng Python truyền thống. Bạn có thể làm việc với nhiều thứ nguyên bằng cách sử dụng mảng NumPy một cách dễ dàng; điều này khó thực hiện hơn với Trăn vani.

Bây giờ, bạn đã sẵn sàng để bắt đầu sử dụng mảng NumPy như một lập trình viên chuyên nghiệp!