Python Hướng dẫn NumPy cho người mới bắt đầu: Học qua các ví dụ
NumPy trong đó là gì Python?
numpy là một thư viện mã nguồn mở có sẵn ở Python, giúp ích cho lập trình toán học, khoa học, kỹ thuật và khoa học dữ liệu. Đây là một thư viện rất hữu ích để thực hiện các hoạt động toán học và thống kê trong Python. Nó hoạt động hoàn hảo cho mảng đa chiều và phép nhân ma trận. 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ụ cần biết. Nó đã được xây dựng để hoạt động với mảng N chiều, đại số tuyến tính, số ngẫu nhiên, biến đổi Fourier, v.v.
NumPy là ngôn ngữ lập trình xử lý các mảng và ma trận đa chiều. Ngoài mảng và ma trận, NumPy còn hỗ trợ một số lượng lớn các phép toán. Trong phần này, chúng ta sẽ xem xét các chức năng thiết yếu mà bạn cần biết trong phần hướng dẫn về 'TensorFlow".
Tại sao nên sử dụng NumPy?
NumPy là hiệu quả bộ nhớ, nghĩa là nó có thể xử lý lượng dữ liệu khổng lồ dễ truy cập hơn bất kỳ thư viện nào khác. Ngoài ra, NumPy rất thuận tiện khi làm việc, đặc biệt là nhân và định hình lại ma trận. Trên hết, NumPy rất nhanh. Trên thực tế, TensorFlow và Scikit học cách sử dụng mảng NumPy để tính toán phép nhân ma trận ở phía sau.
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 từ xa, NumPy chưa được cài đặt-
Bạn có thể cài đặt NumPy bằng Anaconda:
conda install -c anaconda numpy
- In Jupyter Sổ tay :
import sys !conda install --yes --prefix {sys.prefix} numpy
Nhập NumPy và kiểm tra phiên bản
Lệnh nhập numpy là:
import numpy as np
Đoạn mã trên đổi tên không gian tên Numpy thành np. Điều này cho phép chúng ta thêm tiền tố vào hàm, phương thức và thuộc tính Numpy bằng “np” thay vì gõ “numpy”. Đó là lối tắt tiêu chuẩn mà bạn sẽ tìm thấy trong tài liệu khó hiểu
Để kiểm tra phiên bản NumPy đã cài đặt của bạn, hãy sử dụng lệnh bên dưới:
print (np.__version__)
Đầu ra:
1.18.0
Là gì Python Mảng NumPy?
Mảng NumPy hơi giống Python danh sách, nhưng đồng thời vẫn rất khác nhau. Đối với những người mới biết đến chủ đề này, hãy làm rõ chính xác nó là gì và nó tốt cho mục đích gì.
Đúng như tên gọi, mảng NumPy là cấu trúc dữ liệu trung tâm của thư viện gọn gàng. Tên của thư viện thực chất là viết tắt của “Numeric Python” hoặc “Số Python".
Tạo một mảng NumPy
Cách đơn giản nhất để tạo một mảng trong Numpy là sử dụng Python Danh sách
myPythonList = [1,9,8,3]
Để chuyển đổi danh sách python thành một mảng gọn gàng bằng cách sử dụng đối tượng np.array.
numpy_array_from_list = np.array(myPythonList)
Để hiển thị nội dung của danh sách
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 Danh sách. Hoạt động này có thể được kết hợp.
a = np.array([1,9,8,3])
LƯU Ý: Tài liệu Numpy nêu rõ việc sử dụng np.ndarray để tạo một mảng. Tuy nhiên, đây là phương pháp được khuyến nghị.
Bạn cũng có thể tạo một mảng gọn gàng từ Tuple.
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ừ, chia và nhân trên một mảng. Cú pháp là tên mảng, theo sau là phép toán (+.-,*,/), theo sau là toán hạng
Ví dụ:
numpy_array_from_list + 10
Đầu ra:
array([11, 19, 18, 13])
Hoạt động này thêm 10 vào mỗi phần tử của mảng có nhiều mảng.
Hình dạng của mảng
Bạn có thể kiểm tra hình dạng của mảng bằng hình dạng đối tượng đứng trước tên của mảng. Theo cách tương tự, bạn có thể kiểm tra loại bằng dtypes.
import numpy as np a = np.array([1,2,3]) print(a.shape) print(a.dtype) (3,) int64
Một số nguyên là một giá trị không có số thập phân. Nếu bạn tạo một mảng có số thập phân thì kiể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 thứ nguyên bằng dấu “,”coma
Lưu ý rằng nó phải nằm trong ngoặc []
### 2 dimension c = np.array([(1,2,3), (4,5,6)]) print(c.shape) (2, 3)
Mảng 3 chiều
Kích thước cao hơn có thể được xây dựng như sau:
### 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 | Mã |
---|---|
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 () hoặc np.zeros Python hàm được sử dụng để tạo một ma trận chứa đầy các số 0. numpy.zeros() trong Python có thể được sử dụng khi bạn khởi tạo trọng số trong lần lặp đầu tiên trong TensorFlow và 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: là hình dạng của mảng số 0 gọn gàng
- loại D: là kiểu dữ liệu có số 64 gọn gàng. Nó là tùy chọn. Giá trị mặc định là floatXNUMX
- Thứ Tự: Mặc định là C, đây là kiểu hàng thiết yếu cho numpy.zeros() trong 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() được sử dụng để tạo một ma trận chứa đầy những cái một. numpy.ones() trong Python có thể được sử dụng khi bạn khởi tạo trọng số trong lần lặp đầu tiên trong TensorFlow và 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: là hình dạng của np.ones Python Mảng
- loại D: là kiểu dữ liệu dạng NumPy. Nó là tùy chọn. Giá trị mặc định là float64
- Thứ Tự: Mặc định là C là kiểu hàng thiết yếu.
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 Hàm được sử dụng để định hình một mảng mà không thay đổi dữ liệu của nó. Trong một số trường hợp, bạn có thể cần định hình lại dữ liệu từ rộng sang dài. Bạn có thể sử dụng hàm np.reshape cho việc này.
Cú pháp của np.reshape()
numpy.reshape(a, newShape, order='C')
Ở đây,
a: Mảng mà bạn muốn định hình lại
hình mới: Hình dạng mong muốn mới
Thứ Tự: Mặc định là C là kiểu hàng thiết yếu.
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 Hàm được sử dụng để trả về một bản sao của mảng ở dạng một chiều. Khi bạn xử lý một số mạng thần kinh như convnet, bạn cần làm phẳng mảng. Bạn có thể sử dụng các hàm np.flatten() cho việc này.
Cú pháp của np.flatten()
numpy.flatten(order='C')
Ở đây,
Thứ Tự: Mặc định là C là kiểu hàng thiết yếu.
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 hàm trong Python được sử dụng để xếp chồng các chuỗi đầu vào theo chiều ngang để tạo thành một mảng duy nhất. Với hàm hstack(), bạn có thể nối dữ liệu theo chiều ngang. Đây là một chức năng rất tiện lợi trong NumPy.
Hãy nghiên cứu hstack trong Python với một ví dụ:
Ví dụ:
## Horitzontal 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 hàm trong Python được sử dụng để xếp chồng các chuỗi đầu vào theo chiều dọc để tạo thành một mảng duy nhất. Với hàm vstack(), bạn có thể nối dữ liệu theo chiều dọc.
Hãy nghiên cứu nó với 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 nghiên cứu NumPy vstack và hstack, chúng ta hãy tìm hiểu một ví dụ để 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 cho phân phối Gaussian, hãy sử dụng:
numpy.random.normal(loc, scale, size)
Ở đây,
- Nơi: nghĩa. Trung tâm phân phối
- Quy mô: độ lệch chuẩn.
- Kích thước máy: số lần trả về
Ví dụ:
## Generate random nmber from 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ẽ biểu đồ thì phân phối sẽ tương tự như biểu đồ sau
Hàm Asarray NumPy
Hàm asarray() được sử dụng khi bạn muốn chuyển đổi đầu vào thành một mảng. Đầu vào có thể là danh sách, bộ dữ liệu, ndarray, v.v.
Cú pháp:
numpy.asarray(data, dtype=None, order=None)[source]
Ở đây,
dữ liệu: Dữ liệu bạn muốn chuyển đổi thành mảng
gõ: Đây là một đối số tùy chọn. Nếu không được chỉ định, kiểu dữ liệu sẽ được suy ra từ dữ liệu đầu vào
Thứ Tự: Mặc định là C là kiểu hàng thiết yếu. Tùy chọn khác là F (kiểu Fortan)
Ví dụ:
Hãy xem xét ma trận 2 chiều sau với bốn hàng và bốn cột được điền bằng 1
import numpy as np A = np.matrix(np.ones((4,4)))
Nếu bạn muốn thay đổi giá trị của ma trận thì không thể. Lý do là không thể thay đổi bản sao.
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 là bất biến. Bạn có thể sử dụng asarray nếu bạn muốn thêm sửa đổi vào mảng ban đầu. Hãy xem liệu có thay đổi nào xảy ra khi bạn muốn thay đổi giá trị của hàng thứ ba bằng giá trị 2 hay không.
np.asarray(A)[2]=2 print(A)
Giải thích mã:
np.asarray(A): chuyển đổi ma trận A thành mảng
[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 numpy sẵn có trả về một đối tượng ndarray chứa các giá trị cách đều nhau trong một khoảng xác định. Chẳng hạn, bạn muốn tạo các giá trị từ 1 đến 10; bạn có thể sử dụng np.arange() trong Python chức năng.
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 trong Python chức năng.
- 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: Là một kiểu đầu ra mảng cho NumPy arange trong Python.
Ví dụ:
import numpy np np.arange(1, 11)
Đầu ra:
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
Ví dụ:
Nếu bạn muốn thay đổi bước trong hàm sắp xếp NumPy này trong Python Ví dụ: bạn có thể thêm số thứ ba vào dấu ngoặc đơn. Nó sẽ thay đổi bước.
import numpy np np.arange(1, 14, 4)
Đầu ra:
array([ 1, 5, 9, 13])
Hàm Linspace NumPy
Linspace cho các mẫu có khoảng cách đều nhau.
Cú pháp:
numpy.linspace(start, stop, num, endpoint)
Ở đây,
- Bắt đầu: Giá trị đầu của dãy
- Dừng: Giá trị cuối của chuỗi
- Số: Số lượng mẫu cần tạo. Mặc định là 50
- Điểm cuối: Nếu Đúng (mặc định), điểm dừng là giá trị cuối cùng. Nếu sai, giá trị dừng không được bao gồm.
Ví dụ:
Chẳng hạn, nó có thể được sử dụng để tạo 10 giá trị từ 1 đến 5 cách đều nhau.
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, bạn có thể đặt điểm cuối thành sai
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 log. Logspace có cùng tham số với 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ử 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
Cắt dữ liệu là chuyện nhỏ với numpy. Chúng ta sẽ cắt ma trận “e”. Lưu ý rằng, trong Python, bạn cần sử dụng dấu ngoặc để trả về các 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ớ với mảng/cột đầu tiên bắt đầu từ 0.
## First column print('First row:', e[0]) ## Second col print('Second row:', e[1])
Đầu ra:
First row: [1 2 3] Second row: [4 5 6]
In Python, giống như nhiều ngôn ngữ khác,
- Các giá trị trước dấu phẩy đại diện cho các hàng
- Giá trị trên các quyền là viết tắt của các cột.
- Nếu bạn muốn chọn một cột, bạn cần thêm : trước chỉ mục cột.
- : có nghĩa là bạn muốn 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. Bạn sử dụng : để chọn tất cả các cột cho đến cột thứ hai
## Second Row, two values print(e[1, :2]) [4 5]
Hàm thống kê trong Python
NumPy có khá nhiều hàm thống kê hữu ích để tìm độ lệch chuẩn và phương sai tối thiểu, tối đa, phần trăm, v.v. từ các phần tử đã cho trong mảng. Các chức năng được giải thích như sau -
Numpy được trang bị chức năng thống kê mạnh mẽ như được liệt kê bên dưới
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ề hàm thống kê 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ì?
Sản phẩm Numpy.dot là một thư viện mạnh mẽ để tính toán ma trận. Ví dụ: bạn có thể tính tích số chấm bằng np.dot. Tích Numpy.dot là tích vô hướng của a và b. numpy.dot() trong Python xử lý các mảng 2D và thực hiện phép nhân ma trận.
Cú pháp:
numpy.dot(x, y, out=None)
Thông số
Ở đây,
x, y: Mảng đầu vào. cả x và y đều phải là 1-D hoặc 2-D để hàm np.dot() hoạt động
ra: Đây là đối số đầu ra cho mảng 1 chiều được trả về. Nếu không, ndarray sẽ được trả về.
Hoàn trả
Hàm numpy.dot() trong Python trả về một tích Dot của hai mảng x và y. Hàm dot() trả về một số vô hướng nếu cả x và y đều là 1-D; nếu không, nó trả về một mảng. Nếu 'out' được đưa ra thì nó được trả về.
Tăng
Chấm sản phẩm vào Python tạo ra ngoại lệ ValueError nếu chiều cuối cùng của x không có cùng kích thước với chiều cuối cùng thứ hai 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
Hàm Numpy matmul() dùng để trả về tích ma trận của 2 mảng. Đây là cách nó làm việc
1) Mảng 2-D, nó trả về kết quả bình thường
2) Kích thước > 2, sản phẩm được coi là một chồng ma trận
3) Mảng 1 chiều đầu tiên được đưa lên ma trận, sau đó tích được tính toán
Cú pháp:
numpy.matmul(x, y, out=None)
Ở đây,
x, y: Mảng đầu vào. vô hướng không được phép
ra: Đây là tham số tùy chọn. Thông thường đầu ra được lưu trữ trong ndarray
Ví dụ:
Theo cách tương tự, bạn có thể tính toán phép nhân ma trận bằng np.matmul
### Matmul: matruc 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
Cuối cùng nhưng không kém phần quan trọng, nếu bạn cần tính định thức, bạn có thể sử dụng np.linalg.det(). Lưu ý rằng numpy sẽ quan tâm đến kích thước.
Ví dụ:
## Determinant 2*2 matrix ### 5*8-7*6np.linalg.det(i)
Đầu ra:
-2.000000000000005
Tổng kết
- Python là một thư viện mã nguồn mở có sẵn ở Python, giúp ích cho các môn toán học, khoa học, kỹ thuật và lập trình khoa học dữ liệu.
- numpy.zeros() hoặc np.zeros Python hàm được sử dụng để tạo một ma trận chứa đầy các số 0.
- numpy.ones() trong Python có thể được sử dụng khi bạn khởi tạo trọng số trong lần lặp đầu tiên trong TensorFlow và các tác vụ thống kê khác.
- Python Hàm NumPy Reshape được sử dụng để định hình một mảng mà không thay đổi dữ liệu của nó.
- Python Hàm NumPy Flatten được sử dụng để trả về bản sao của mảng ở dạng một chiều.
- Numpy.hstack là một hàm trong Python được sử dụng để xếp chồng các chuỗi đầu vào theo chiều ngang để tạo thành một mảng duy nhất.
- Numpy.vstack là một hàm trong Python được sử dụng để xếp chồng các chuỗi đầu vào theo chiều dọc để tạo thành một mảng duy nhất.
- numpy.arange() là một hàm numpy sẵn có trả về một đối tượng ndarray chứa các giá trị cách đều nhau trong một khoảng xác định.
- Sản phẩm Numpy.dot là một thư viện mạnh mẽ để tính toán ma trận.
- Hàm Numpy matmul() dùng để trả về tích ma trận của 2 mảng.