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

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

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

: Đâ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.