Python Hướng dẫn NumPy dành cho người mới bắt đầu

⚡ Tóm tắt thông minh

NumPy là nền tảng Python NumPy là thư viện dành cho tính toán số học, hỗ trợ mảng, ma trận, đại số tuyến tính và lấy mẫu ngẫu nhiên. Hướng dẫn NumPy này sẽ hướng dẫn bạn qua quá trình cài đặt, tạo mảng và tái tạo dữ liệu.ping, cắt lát, thống kê và toán ma trận với khả năng chạy được Python ví dụ.

  • Công dụng chính: Mảng N chiều nhanh và toán học vector hóa trong Python.
  • ⚙️ Chức năng chính: số không, số một, định hình lại, hstack, dot, linspace.
  • 📚 Foundations: Đại số tuyến tính, phát thanh, thống kê, phân tích dữ liệu.
  • 🚀 Phiên bản hiện tại: NumPy 2.x (phát hành tháng 6 năm 2024) hiện đã ổn định.
  • 🤖 Sử dụng AI: Xương sống của PyTorch, TensorFlow, JAX và CuPy tensor.

Python Hướng dẫn về NumPy

NumPy trong đó là gì Python?

numpy là một nguồn mở Python Thư viện này dùng cho lập trình toán học, khoa học, kỹ thuật và khoa học dữ liệu. Nó là một thư viện rất hữu ích cho các phép toán và thống kê. PythonNó hoạt động hoàn hảo với mảng đa chiều và phép nhân ma trận, và dễ dàng tích hợp với C/C++ và Fortran.

Đối với bất kỳ dự án khoa học nào, NumPy là công cụ không thể thiếu. Nó được xây dựng cho mảng N chiều, đại số tuyến tính, tạo số ngẫu nhiên, biến đổi Fourier, và nhiều hơn nữa.

NumPy cung cấp Python Hỗ trợ hàng đầu cho mảng và ma trận đa chiều, cùng với một tập hợp lớn các phép toán học tác động lên chúng. Trong hướng dẫn này, chúng ta sẽ xem xét lại các chức năng thiết yếu mà bạn cần biết trước khi chuyển sang hướng dẫn về 'TensorFlow".

Tại sao nên sử dụng NumPy?

NumPy tiết kiệm bộ nhớ, do đó nó có thể xử lý khối lượng lớn dữ liệu số dễ dàng hơn so với các thư viện thuần túy khác. Python danh sách. Nó cũng rất tiện lợi cho phép nhân ma trận và phép chia.pingVà nó nhanh vì phần lớn công việc nặng nhọc được giao cho các hàm C đã biên dịch. Trên thực tế, các thư viện như TensorFlow, PyTorch và Scikit-learn dựa vào mảng NumPy để thực hiện các phép toán ma trận ở phần xử lý dữ liệu, điều này khiến NumPy trở thành "công cụ đắc lực" thầm lặng đằng sau hầu hết các quy trình làm việc khoa học dữ liệu và trí tuệ nhân tạo hiện đại.

Cách cài đặt NumPy

Để cài đặt thư viện NumPy, vui lòng tham khảo hướng dẫn của chúng tôi. Cách cài đặt TensorFlow. NumPy được cài đặt mặc định với Anaconda.

Trong trường hợp hiếm hoi NumPy không được cài đặt, hãy sử dụng bất kỳ tùy chọn nào dưới đây.

Bạn có thể cài đặt NumPy bằng Anaconda:

conda install -c anaconda numpy
  • In Jupyter Máy tính xách tay:
import sys
!conda install --yes --prefix {sys.prefix} numpy

Người dùng Pip có thể cài đặt hoặc nâng cấp chỉ bằng một lệnh duy nhất:

pip install --upgrade numpy

Nhập NumPy và kiểm tra phiên bản

Lệnh nhập numpy là:

import numpy as np

Dòng lệnh trên đổi tên không gian tên NumPy thành npPhím tắt này cho phép bạn thêm tiền tố vào các hàm, phương thức và thuộc tính của NumPy bằng np. thay vì typing numpy.và đó là quy ước tiêu chuẩn mà bạn sẽ thấy trong toàn bộ hệ sinh thái NumPy.

Để kiểm tra phiên bản NumPy đã cài đặt, hãy sử dụng lệnh sau:

print(np.__version__)

Đầu ra:

2.1.3

NumPy 2.0 được phát hành vào tháng 6 năm 2024 và hiện là phiên bản chính ổn định. Nếu dự án của bạn vẫn phụ thuộc vào API 1.x, hãy ghim phiên bản đó vào... numpy<2 trong tệp yêu cầu của bạn vì một số bí danh cũ như np.float đã bị loại bỏ trong phiên bản 2.0.

Một Python Mảng NumPy?

Mảng NumPy trông hơi giống như thế này: Python Thoạt nhìn chúng giống như danh sách, nhưng cách hoạt động của chúng lại rất khác nhau. Đối với những độc giả mới làm quen với chủ đề này, chúng ta hãy cùng làm rõ ndarray là gì và tại sao nó lại quan trọng.

Như tên gọi cho thấy, mảng NumPy là cấu trúc dữ liệu trung tâm của thư viện NumPy. Bản thân tên gọi này là viết tắt của "Numeric" (số học). Python” hoặc “Số Python”, và ndarray là một khối bộ nhớ đồng nhất, có kích thước cố định, với hình dạng và kiểu dữ liệu đã biết.

Tạo một mảng NumPy

Cách đơn giản nhất để tạo mảng trong NumPy là bắt đầu từ một mảng con. Python Danh sách.

myPythonList = [1,9,8,3]

chuyển đổi Python chuyển đổi danh sách thành mảng NumPy bằng cách sử dụng np.array.

numpy_array_from_list = np.array(myPythonList)

Hiển thị nội dung của mảng.

numpy_array_from_list

Đầu ra:

array([1, 9, 8, 3])

Trong thực tế, không cần phải khai báo Python Liệt kê trước. Hai bước này có thể được kết hợp.

a = np.array([1,9,8,3])

LƯU Ý: Tài liệu hướng dẫn của NumPy cũng đề cập đến điều này. np.ndarray, Nhưng np.array Đây là chức năng mặc định được nhà sản xuất khuyến nghị cho việc sử dụng hàng ngày.

Bạn cũng có thể tạo mảng NumPy từ một tuple theo cách tương tự.

Toán học Operacác thao tác trên một mảng

Bạn có thể thực hiện các phép toán như cộng, trừ.tracPhép toán cộng, chia và nhân trên mảng. Cú pháp là tên mảng, theo sau là toán tử ( ).+, -, *, /), theo sau là toán hạng. Các phép toán này được vector hóa, có nghĩa là NumPy áp dụng chúng cho mọi phần tử mà không cần khai báo rõ ràng. Python Vòng lặp.

Ví dụ:

numpy_array_from_list + 10

Đầu ra:

array([11, 19, 18, 13])

Thao tác này cộng thêm 10 vào mỗi phần tử của mảng NumPy.

Hình dạng của mảng

Bạn có thể kiểm tra kích thước của một mảng bằng cách sử dụng shape thuộc tính, được truy cập bằng cách thêm nó vào tên mảng. Tương tự, bạn có thể kiểm tra kiểu bằng cách sử dụng dtype.

import numpy as np
a = np.array([1,2,3])
print(a.shape)
print(a.dtype)

(3,)
int64

Số nguyên là giá trị không có dấu thập phân. Nếu bạn tạo một mảng chứa các số thập phân, kiểu dữ liệu sẽ thay đổi thành float.

#### Different type
b = np.array([1.1,2.0,3.2])
print(b.dtype)

float64

Mảng 2 chiều

Bạn có thể thêm chiều dữ liệu bằng cách sử dụng dấu phẩy bên trong dấu ngoặc đơn.

Lưu ý rằng các bộ giá trị bên trong phải nằm bên trong dấu ngoặc vuông bên ngoài. [].

### 2 dimension
c = np.array([(1,2,3),
              (4,5,6)])
print(c.shape)
(2, 3)

Mảng 3 chiều

Các chiều không gian cao hơn có thể được xây dựng theo cách tương tự.

### 3 dimension
d = np.array([
    [[1, 2,3],
        [4, 5, 6]],
    [[7, 8,9],
        [10, 11, 12]]
])
print(d.shape)
(2, 2, 3)
Mục tiêu Code
Tạo mảng mảng([1,2,3])
in hình dạng mảng([.]).hình dạng

Numpy.zeros() là gì?

numpy.zeros () or np.zeros là một Python Hàm được sử dụng để tạo một ma trận chứa toàn số 0. numpy.zeros() Điều này rất hữu ích khi bạn cần khởi tạo trọng số trong lần lặp đầu tiên trong TensorFlow hoặc thiết lập bộ đệm giữ chỗ cho các tác vụ thống kê khác.

Cú pháp của hàm numpy.zeros()

numpy.zeros(shape, dtype=float, order='C')

Python Tham số numpy.zeros()

Ở đây,

  • Hình dạng: hình dạng của mảng số 0 trong NumPy.
  • loại D: kiểu dữ liệu của các phần tử. Tham số này là tùy chọn, và giá trị mặc định là float64.
  • Mã đơn hàng: mặc định là C, đó là bố cục hàng chính được sử dụng bởi numpy.zeros() in Python.

Python numpy.zeros() Ví dụ

import numpy as np
np.zeros((2,2))

Đầu ra:

array([[0., 0.],
          [0., 0.]])

Ví dụ về số 0 gọn gàng với Kiểu dữ liệu

import numpy as np
np.zeros((2,2), dtype=np.int16)

Đầu ra:

array([[0, 0],
         [0, 0]], dtype=int16)

Numpy.ones() là gì?

hàm np.ones() Tạo ra một ma trận toàn số 1. numpy.ones() in Python Điều này rất hữu ích khi bạn khởi tạo trọng số trong lần lặp đầu tiên trong TensorFlow và cho các tác vụ thống kê khác.

Python Cú pháp numpy.ones()

numpy.ones(shape, dtype=float, order='C')

Python Tham số numpy.ones()

Ở đây,

  • Hình dạng: hình dạng của np.ones Python Mảng.
  • loại D: kiểu dữ liệu của các phần tử. Tham số này là tùy chọn, và giá trị mặc định là float64.
  • Mã đơn hàng: mặc định là C, đó là bố cục theo hàng chính.

Python numpy.ones() Mảng 2D với ví dụ về kiểu dữ liệu

import numpy as np
np.ones((1,2,3), dtype=np.int16)

Đầu ra:

array([[[1, 1, 1],
       [1, 1, 1]]], dtype=int16)

hàm numpy.reshape() trong Python

Python Định hình lại NumPy Thay đổi hình dạng của mảng mà không thay đổi dữ liệu bên trong. Bạn có thể cần định hình lại dữ liệu từ định dạng rộng sang định dạng dài, hoặc chuyển từ vectơ 1 chiều sang ma trận 2 chiều trước khi đưa vào mô hình. np.reshape Hàm này xử lý việc đó chỉ trong một lần gọi.

Cú pháp của np.reshape()

numpy.reshape(a, newShape, order='C')

Ở đây,

aMảng mà bạn muốn định hình lại.

hình mới: hình dạng mong muốn mới.

Mã đơn hàng: mặc định là C, bố cục theo hàng chính.

Ví dụ về định hình lại NumPy

import numpy as np
e = np.array([(1,2,3), (4,5,6)])
print(e)
e.reshape(3,2)

Đầu ra:

 // Before reshape
[[1 2 3]
 [4 5 6]]
//After Reshape
array([[1, 2],
	[3, 4],
	[5, 6]])

numpy.flatten() trong Python

Python Làm phẳng NumPy Trả về một bản sao của mảng được thu gọn thành một chiều. Khi làm việc với các mạng nơ-ron như mạng tích chập (convnets), bạn thường cần làm phẳng tensor hình ảnh trước khi truyền nó đến lớp dày đặc (dense layer). np.flatten() Hàm này xử lý việc đó chỉ trong một lần gọi.

Cú pháp của np.flatten()

numpy.flatten(order='C')

Ở đây,
Mã đơn hàng: mặc định là C, bố cục theo hàng chính.

Ví dụ về NumPy Flatten

e.flatten()

Đầu ra:

array([1, 2, 3, 4, 5, 6])

numpy.hstack() trong là gì Python?

numpy.hstack là một Python Hàm được sử dụng để xếp chồng các chuỗi mảng đầu vào theo chiều ngang thành một mảng duy nhất. Với hstack()Bạn thêm dữ liệu dọc theo trục cột. Đây là một công cụ hỗ trợ rất tiện lợi trong NumPy khi bạn cần hợp nhất các vectơ đặc trưng cạnh nhau.

Chúng ta hãy cùng nghiên cứu hstack in Python với một ví dụ.

Ví dụ:

## Horizontal Stack
import numpy as np
f = np.array([1,2,3])
g = np.array([4,5,6])
print('Horizontal Append:', np.hstack((f, g)))

Đầu ra:

Horizontal Append: [1 2 3 4 5 6]

numpy.vstack() trong là gì Python?

numpy.vstack là một Python Hàm được sử dụng để xếp chồng các chuỗi mảng đầu vào theo chiều dọc thành một mảng duy nhất. Với vstack()Bạn có thể thêm dữ liệu dọc theo trục hàng, điều này rất tiện lợi khi bạn muốn kết hợp các lô mẫu.

Chúng ta hãy cùng nghiên cứu điều này qua một ví dụ.

Ví dụ:

## Vertical Stack
import numpy as np
f = np.array([1,2,3])
g = np.array([4,5,6])
print('Vertical Append:', np.vstack((f, g)))

Đầu ra:

Vertical Append: [[1 2 3]
 [4 5 6]]

Sau khi học NumPy vstackhstackChúng ta hãy xem một ví dụ về cách tạo số ngẫu nhiên trong NumPy.

Tạo ngẫu nhiên Numbers sử dụng NumPy

Để tạo số ngẫu nhiên từ phân phối Gaussian, hãy sử dụng:

numpy.random.normal(loc, scale, size)

Ở đây,

  • NơiGiá trị trung bình. Tâm của phân bố.
  • Quy môĐộ lệch chuẩn.
  • Kích thước máySố lượng mẫu trả về.

Ví dụ:

## Generate random numbers from a normal distribution
normal_array = np.random.normal(5, 0.5, 10)
print(normal_array)
[5.56171852 4.84233558 4.65392767 4.946659   4.85165567 5.61211317 4.46704244 5.22675736 4.49888936 4.68731125]

Nếu vẽ đồ thị, sự phân bố sẽ tương tự như đồ thị sau đây.

Ví dụ để tạo ngẫu nhiên Numbers sử dụng NumPy
Ví dụ để tạo ngẫu nhiên Numbers sử dụng NumPy

Lưu ý rằng các mã nguồn mới hơn ngày càng sử dụng API trình tạo hiện đại. np.random.default_rng(), đây là giải pháp thay thế được khuyến nghị cho phiên bản cũ. np.random.normal các lệnh gọi trong NumPy 2.x.

Hàm Asarray NumPy

asarray() Hàm này chuyển đổi đầu vào thành một mảng. Đầu vào có thể là một danh sách, bộ dữ liệu (tuple), mảng đa chiều (ndarray) hoặc một chuỗi tương tự.

Cú pháp:

numpy.asarray(data, dtype=None, order=None)

Ở đây,

dữ liệuDữ liệu bạn muốn chuyển đổi thành mảng.

: tùy chọn. Nếu không được chỉ định, kiểu dữ liệu sẽ được suy luận từ dữ liệu đầu vào.

Mã đơn hàng: mặc định là C, bố cục theo hàng chính. Lựa chọn khác là F (Fortra(cột chính kiểu n).

Ví dụ:

Hãy xem xét ma trận 2D sau với bốn hàng và bốn cột, được điền toàn số 1.

import numpy as np
A = np.matrix(np.ones((4,4)))

Nếu bạn cố gắng thay đổi một giá trị trong ma trận thông qua np.arrayBản gốc không bị chỉnh sửa. Lý do là... np.array Tạo một bản sao của ma trận.

np.array(A)[2]=2
print(A)
[[1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]]

Ma trận không thay đổi. Sử dụng asarray Khi bạn muốn sửa đổi mảng gốc tại chỗ. Hãy xem điều gì xảy ra khi bạn đặt hàng thứ ba thành giá trị 2.

np.asarray(A)[2]=2
print(A)

Code Giải thích:

np.asarray(A) chuyển đổi ma trận A thành một mảng hiển thị.

[2] Chọn hàng thứ ba.

Đầu ra:

[[1. 1. 1. 1.]
      [1. 1. 1. 1.]
      [2. 2. 2. 2.] # new value
      [1. 1. 1. 1.]]

Numpy.arange() là gì?

numpy.arange() là một hàm tích hợp sẵn của NumPy trả về một mảng ndarray chứa các giá trị cách đều nhau trong một khoảng xác định. Ví dụ, để tạo các giá trị từ 1 đến 10, bạn có thể gọi hàm này. np.arange() in Python.

Cú pháp:

numpy.arange(start, stop, step, dtype)

Python Tham số sắp xếp NumPy:

  • Bắt đầu: bắt đầu khoảng thời gian cho np.arange in Python.
  • Dừng: kết thúc khoảng thời gian.
  • Bước Khoảng cách giữa các giá trị. Bước mặc định là 1.
  • loại D: kiểu dữ liệu của mảng đầu ra cho NumPy arange.

Ví dụ:

import numpy as np
np.arange(1, 11)

Đầu ra:

array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])

Ví dụ:

Để thay đổi bước trong NumPy này arange Ví dụ, thêm số thứ ba vào trong ngoặc. Điều này sẽ thay đổi kích thước bước.

import numpy as np
np.arange(1, 14, 4)

Đầu ra:

array([ 1,  5,  9, 13])

Hàm Linspace NumPy

linspace Trả về các mẫu được phân bố đều giữa hai điểm cuối.

Cú pháp:

numpy.linspace(start, stop, num, endpoint)

Ở đây,

  • Bắt đầuGiá trị bắt đầu của dãy số.
  • DừngGiá trị cuối cùng của dãy số.
  • SốSố lượng mẫu cần tạo. Mặc định là 50.
  • Điểm cuối: nếu True (Mặc định), stop là giá trị cuối cùng. Nếu False, stop Không bao gồm.

Ví dụ:

Ví dụ, nó có thể được sử dụng để tạo ra 10 giá trị cách đều nhau từ 1 đến 5.

import numpy as np
np.linspace(1.0, 5.0, num=10)

Đầu ra:

array([1.        , 1.44444444, 1.88888889, 2.33333333, 2.77777778,       3.22222222, 3.66666667, 4.11111111, 4.55555556, 5.        ])

Nếu bạn không muốn bao gồm chữ số cuối cùng trong khoảng, hãy đặt endpoint đến False.

np.linspace(1.0, 5.0, num=5, endpoint=False)

Đầu ra:

array([1. , 1.8, 2.6, 3.4, 4.2])

Hàm LogSpace NumPy trong Python

logspace Trả về các số cách đều nhau trên thang logarit. logspace chia sẻ các tham số giống như np.linspace.

Cú pháp:

numpy.logspace(start, stop, num, endpoint)

Ví dụ:

np.logspace(3.0, 4.0, num=4)

Đầu ra:

array([ 1000. ,  2154.43469003,  4641.58883361, 10000.        ])

Cuối cùng, nếu bạn muốn kiểm tra kích thước bộ nhớ của một phần tử riêng lẻ trong mảng, bạn có thể sử dụng itemsize.

x = np.array([1,2,3], dtype=np.complex128)
x.itemsize

Đầu ra:

16

Mỗi phần tử mất 16 byte.

Lập chỉ mục và cắt lát trong Python

Việc chia nhỏ dữ liệu rất đơn giản với NumPy. Chúng ta sẽ chia nhỏ ma trận. e. Trong PythonBạn sử dụng dấu ngoặc vuông để trả về hàng hoặc cột.
Ví dụ:

## Slice
import numpy as np
e = np.array([(1,2,3), (4,5,6)])
print(e)
[[1 2 3]
 [4 5 6]]

Hãy nhớ rằng trong NumPy, chỉ số mảng đầu tiên bắt đầu từ 0.

## First row
print('First row:', e[0])

## Second row
print('Second row:', e[1])

Đầu ra:

First row: [1 2 3]
Second row: [4 5 6]

In Pythoncũng như trong nhiều ngôn ngữ khác,

  • Giá trị trước dấu phẩy biểu thị số hàng.
  • Giá trị sau dấu phẩy biểu thị số cột.
  • Nếu bạn muốn chọn một cột, hãy thêm vào : trước chỉ số cột.
  • : Điều này có nghĩa là bạn muốn lấy tất cả các hàng từ cột đã chọn.
print('Second column:', e[:,1])
Second column: [2 5]

Để trả về hai giá trị đầu tiên của hàng thứ hai, hãy sử dụng : Chọn tất cả các cột cho đến chỉ mục thứ hai.

## Second Row, two values
print(e[1, :2])
[4 5]

Hàm thống kê trong Python

NumPy cung cấp một tập hợp các hàm thống kê hữu ích để tìm giá trị nhỏ nhất, lớn nhất, phân vị, độ lệch chuẩn, phương sai, và nhiều hơn nữa từ một mảng cho trước. Các hàm phổ biến nhất được liệt kê bên dưới.

NumPy đi kèm với các công cụ hỗ trợ thống kê mạnh mẽ, được tóm tắt trong bảng.

Chức năng numpy
min np.min()
Max np.max()
Nghĩa là np.mean()
trung tuyến np.median()
Độ lệch chuẩn np.std()

Hãy xem xét mảng sau:

Ví dụ:

import numpy as np
normal_array = np.random.normal(5, 0.5, 10)
print(normal_array)

Đầu ra:

[5.56171852 4.84233558 4.65392767 4.946659   4.85165567 5.61211317 4.46704244 5.22675736 4.49888936 4.68731125]

Ví dụ về các hàm thống kê trong NumPy

### Min
print(np.min(normal_array))

### Max
print(np.max(normal_array))

### Mean
print(np.mean(normal_array))

### Median
print(np.median(normal_array))

### Sd
print(np.std(normal_array))

Đầu ra:

4.467042435266913
5.612113171990201
4.934841002270593
4.846995625786663
0.3875019367395316

Sản phẩm chấm numpy là gì?

numpy.dot là một hàm mạnh mẽ để tính toán ma trận. Ví dụ, bạn có thể tính tích vô hướng với np.dot. numpy.dot trả về tích vô hướng của abvà xử lý cả mảng 1 chiều và 2 chiều. Đối với đầu vào 2 chiều, nó thực hiện phép nhân ma trận.

Cú pháp:

numpy.dot(x, y, out=None)

Thông số Kỹ thuật

Ở đây,

x, y: mảng đầu vào. xy Cả hai đều nên là 1D hoặc 2D cho np.dot() Để thực hiện phép nhân vô hướng hoặc phép nhân ma trận.

ra: Tham số đầu ra tùy chọn được sử dụng để ghi lại kết quả. Nếu không, một mảng ndarray sẽ được trả về.

Hoàn trả

Các chức năng numpy.dot() Trả về tích vô hướng của hai mảng. xyNó trả về một giá trị vô hướng khi cả hai đều là 1 chiều, ngược lại nó trả về một mảng. Nếu out Khi được cung cấp, mảng đó sẽ được trả về.

Tăng

Tích vô hướng trong Python tăng một ValueError nếu chiều cuối cùng của x không khớp với chiều thứ hai từ cuối cùng của y.

Ví dụ:

## Linear algebra
### Dot product: product of two arrays
f = np.array([1,2])
g = np.array([4,5])
### 1*4+2*5
np.dot(f, g)

Đầu ra:

14

Phép nhân ma trận trong Python

NumPy matmul() Hàm này trả về tích ma trận của hai mảng. Cách thức hoạt động như sau.

1) Đối với mảng 2 chiều, nó trả về tích ma trận thông thường.

2) Đối với số chiều lớn hơn 2, tích được coi như một chồng ma trận.

3) Mảng một chiều được chuyển đổi thành ma trận trước, sau đó phép nhân được thực hiện.

phần chèn @ người vận hành, có sẵn từ Python 3.5 là viết tắt của matmul và được sử dụng rộng rãi trong lập trình hiện đại.

Cú pháp:

numpy.matmul(x, y, out=None)

Ở đây,

x, y: mảng đầu vào. Không cho phép giá trị vô hướng.

ra: Tham số tùy chọn. Thông thường, kết quả được lưu trữ trong một mảng ndarray.

Ví dụ:

Tương tự như vậy, bạn có thể tính phép nhân ma trận bằng cách sử dụng... np.matmul.

### Matmul: matrix product of two arrays
h = [[1,2],[3,4]]
i = [[5,6],[7,8]]
### 1*5+2*7 = 19
np.matmul(h, i)

Đầu ra:

array([[19, 22],
            [43, 50]])

xác định

Nếu bạn cần tính định thức của ma trận, hãy sử dụng np.linalg.det()NumPy sẽ tự động xử lý kích thước cho bạn.

Ví dụ:

## Determinant 2*2 matrix
### 5*8-7*6
np.linalg.det(i)

Đầu ra:

-2.000000000000005

Giải thích về tính năng Broadcasting trong NumPy

Broadcasting là quy tắc cho phép NumPy thực hiện các phép toán trên mảng có hình dạng khác nhau mà không cần sao chép dữ liệu. Khi bạn cộng một số vô hướng với một vectơ 1 chiều, hoặc một vectơ 1 chiều với một ma trận 2 chiều, NumPy sẽ kéo giãn toán hạng nhỏ hơn dọc theo các trục còn thiếu để các hình dạng khớp nhau. Điều này tránh được việc phải sao chép dữ liệu một cách rõ ràng. Python Các vòng lặp là một trong những lý do chính khiến mã NumPy chạy nhanh và ngắn gọn.

Hai hình dạng được coi là tương thích để phát sóng khi, so sánh từ phải sang trái, mỗi cặp chiều đều bằng nhau hoặc một trong hai chiều bằng 1. Ví dụ, một ma trận có hình dạng (3, 4) phát sóng chống lại một hàng hình dạng (4,) hoặc một cột hình dạng (3, 1)Cùng một logic đó chi phối quá trình chuẩn hóa trong học máy, nơi bạn thay thế...tracvectơ trung bình trên mỗi đặc trưng từ một loạt mẫu trên một dòng duy nhất. Phát sóng cũng là mô hình khái niệm được sử dụng bởi các thư viện tensor như PyTorch, TensorFlow và JAX, vì vậy các quy tắc bạn học được ở đây có thể áp dụng trực tiếp vào mã GPU.

NumPy hỗ trợ trí tuệ nhân tạo và máy học như thế nào?

NumPy là nền tảng của hầu hết mọi thứ hiện đại. Python Ngăn xếp AI. PyTorCác tensor ch, tensor eager của TensorFlow và mảng JAX đều có cùng chức năng broadcast, slicing và resha.ping API mà bạn đã học về mảng NumPy ndarrays. Nhiều hướng dẫn vẫn sử dụng các mảng NumPy đã được xử lý trước để đưa vào vòng lặp huấn luyện mô hình, và các framework chấp nhận chúng mà không cần chuyển đổi gì.

Ba mô hình cụ thể cho thấy cách NumPy kết nối với công việc AI hiện nay. Thứ nhất, các kỹ sư dữ liệu định hình các đặc trưng thô thành mảng NumPy trước khi chuyển chúng cho các pipeline của scikit-learn hoặc cho các tập dữ liệu Hugging Face. Thứ hai, các nhà nghiên cứu sử dụng NumPy làm nền tảng CPU và sau đó chuyển sang CuPy, cung cấp API gần như giống hệt nhưng chạy trên GPU NVIDIA thông qua CUDA. Thứ ba, JAX xây dựng trên API của NumPy để thêm tính năng tự động tính đạo hàm và biên dịch tức thời, do đó cùng một mã chạy trên máy tính xách tay có thể chạy trên TPU trên đám mây. Điều cần ghi nhớ là các kỹ năng về mảng mà bạn xây dựng với NumPy sẽ được áp dụng vào mọi bộ công cụ học sâu chính, điều này làm cho hướng dẫn này trở thành một bước hữu ích trên con đường phát triển AI.

Câu Hỏi Thường Gặp

NumPy cung cấp mảng N chiều nhanh, toán học vector hóa, đại số tuyến tính, lấy mẫu ngẫu nhiên và biến đổi Fourier. Các kỹ sư và nhà khoa học dữ liệu sử dụng nó cho tính toán số học, xử lý hình ảnh và tín hiệu, thống kê, và làm nền tảng mảng cho các thư viện cấp cao hơn như pandas, scikit-learn và SciPy.

Mảng NumPy lưu trữ các phần tử của một kiểu dữ liệu cố định trong một khối bộ nhớ liền kề, điều này giúp cho các phép toán vector hóa diễn ra nhanh chóng. Python Danh sách chứa các đối tượng tùy ý, hỗ trợ nhiều kiểu dữ liệu khác nhau và dựa vào các vòng lặp chậm hơn trên từng phần tử, vì vậy chúng linh hoạt nhưng kém hiệu quả hơn nhiều đối với các khối lượng công việc tính toán lớn.

NumPy 2.0, được phát hành vào tháng 6 năm 2024, giữ nguyên API mảng cốt lõi nhưng loại bỏ các bí danh đã lỗi thời từ lâu, chẳng hạn như... np.floatnp.intvà siết chặt các quy tắc quảng bá kiểu dữ liệu. Hầu hết mã sản xuất chỉ cần chỉnh sửa nhỏ. Ghim numpy<2 nếu một thành phần phụ thuộc chưa được cập nhật.

PyTorch và TensorFlow mô hình hóa các đối tượng tensor của chúng dựa trên mảng NumPy ndarray. Chúng có cùng hình dạng, phép toán broadcasting và ngữ nghĩa cắt lát, và cả hai đều chấp nhận mảng NumPy làm đầu vào. Các kỹ năng học được với NumPy có thể chuyển giao trực tiếp sang việc xây dựng mạng nơ-ron, vòng lặp huấn luyện và các quy trình tiền xử lý tensor.

NumPy mặc định chạy trên CPU. Để tăng tốc bằng GPU, hãy sử dụng CuPy, mô phỏng API của NumPy trên các thiết bị NVIDIA CUDA, hoặc JAX, bổ sung tính năng tự động so sánh và biên dịch tức thời cho GPU và TPU. Cả hai đều cho phép bạn tái sử dụng hầu hết mã NumPy hiện có với việc viết lại tối thiểu cho các tác vụ AI.

Anaconda tích hợp sẵn NumPy theo mặc định. Nếu không, hãy chạy lệnh sau: pip install numpy or conda install -c anaconda numpyĐể nâng cấp phiên bản NumPy hiện có lên 2.x, hãy chạy lệnh sau: pip install --upgrade numpyKiểm tra phiên bản đang hoạt động bằng cách sử dụng... print(np.__version__) trong Python.

Broadcasting cho phép NumPy hoạt động trên các mảng có kích thước khác nhau mà không cần sao chép dữ liệu. Mảng nhỏ hơn sẽ được kéo giãn ảo để phù hợp với mảng lớn hơn khi kích thước tương thích. Điều này giúp tạo ra các biểu thức ngắn gọn cho việc chuẩn hóa, chia tỷ lệ và kỹ thuật đặc trưng trong các quy trình học máy.

Tóm tắt bài viết này với: