Một vài ví dụ Numpy

Cơ bản
    Đối tượng chính của Numpy là các dãy đa chiều đồng nhất (homogeneous multidimention array). Là một bảng tập hợp các phần tử cùng kiểu dữ liệu và được chỉ mục bằng các số nguyên dương. Chiều trong Numpy được gọi là trục (axes). Chỉ số của trục gọi là hạng (rank).
    Ví dụ, tọa độ của một điểm trong không gian 3D [1, 2, 1] là một dãy có rank là 1, bởi vì nó chỉ có một trục. Trục này có chiều dài là 3. Ví dụ tiếp theo là dãy có rank là 2. Trục thứ nhất có chiều dài bằng 2 và trục thứ 2 có chiều dài bằng 3.
[[1.0, 0., 0.],
[0., 1., 2.,]]

   
Các lớp của dãy trong Numpy gọi là ndarray. Thường nhắc như là tên riêng của array. Note: Numpy.array thì không giống với lớp array.array trong thư viện chuẩn của Python, sử dụng dãy chỉ có một chiều và có ít hàm hơn. Các thuộc tính quan trọng của hàm ndarray.

ndarray.ndim
    số trục (chiều) của dãy. Trong python, số chiều được gọi là hạng (rank - số hàng chứa trong ma trận)
ndarray.shape
    chiều của dãy. Đây là một tuple các số nguyên chỉ kích cỡ của dãy trong mỗi chiều. Biểu diễn bằng        ma trận với n dòng và m cột, hình dạng sẽ là (n,m). Độ dài của một shape tuple sẽ là hạng hoặc là số     chiều, ndim.
ndarray.size
    tổng số các phần tử chứa trong dãy. Bằng với tích (product) các phần tử có trong shape
ndarray.itemsize
    Kích thước của các phần tử được tính bằng bytes. Ví dụ, một chuỗi gồm các phần tử có kiểu dữ liệu là     float64 có itemsize 8 (=64/8). Tương đương với ndarray.dtype.itemsize
ndarray.data
    Bộ đệm (buffer) chứa các phần tử hiện tại của dãy. Thông thường, chúng ta không cần phải dùng đặc     tính này bởi vì, chúng ta truy cập được phần tử của dãy thông qua indexing facilities

>>> import numpy as np >>> a = np.arange(15).reshape(3, 5) >>> a array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14]]) >>> a.shape (3, 5) >>> a.ndim 2 >>> a.dtype.name 'int64' >>> a.itemsize 8 >>> a.size 15 >>> type(a) <type 'numpy.ndarray'> >>> b = np.array([6, 7, 8]) >>> b array([6, 7, 8]) >>> type(b) <type 'numpy.ndarray'>
Khởi tạo dãy
    Có rất nhiều cách để tạo một dãy. Ví dụ, có thể tạo được dãy từ list hoặc tuple của python sử dụng hàm array.  Kiểu dữ liệu của kết quả sẽ được suy đoán từ kiểu dữ liệu của các phần từ theo thứ tự ( sequences).
>>> import numpy as np >>> a = np.array([2,3,4]) >>> a array([2, 3, 4]) >>> a.dtype dtype('int64') >>> b = np.array([1.2, 3.5, 5.1]) >>> b.dtype dtype('float64')

Lỗi sai thường gặp khi gọi hàm array là nên gọi dạng nhiều argument, hơn là
cấp 1 list các số của một agument.

>>> a = np.array(1,2,3,4) # WRONG >>> a = np.array([1,2,3,4]) # RIGHT
array chuyển từ sequences of sequences sang dạng dãy 2-chiều, hoặc sequences
of sequences sang dạng dãy 3-chiều
>>> b = np.array([(1.5,2,3), (4,5,6)]) >>> b array([[ 1.5, 2. , 3. ], [ 4. , 5. , 6. ]])

Kiểu dữ liệu của dãy có thể tạo bằng cách định nghĩa cùng với thời gian tạo
>>> c = np.array( [ [1,2], [3,4] ], dtype=complex ) >>> c array([[ 1.+0.j, 2.+0.j], [ 3.+0.j, 4.+0.j]])

Thông thường, các phần tử của dãy đều không xác định trước, nhưng lại xác
định được kích thước của chung. Vì thế Numpy có rất nhiều hàm có thể tạo
dãy với lượng dữ liệu được giữ ban đầu ( initial placeholder content).Việc
giảm tối thiểu sự tăng trưởng thiết yếu của dãy đòi hỏi quá trính đắt đỏ.
Hàm zeros tạo ra một dãy gồm các phần tử 0, hàm ones tạo ra dãy gồm toàn
các phần tử 1,và hàm empty tạo ra dãy với giá trị được chọn ngẫu nhiên và
phụ thuộc vàotrạng thái của bộ nhớ. Mặc định, kiểu dữ liệu được tạo ra là
float64
>>> np.zeros( (3,4) ) array([[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.]]) >>> np.ones( (2,3,4), dtype=np.int16 ) # dtype can also be specified array([[[ 1, 1, 1, 1], [ 1, 1, 1, 1], [ 1, 1, 1, 1]], [[ 1, 1, 1, 1], [ 1, 1, 1, 1], [ 1, 1, 1, 1]]], dtype=int16) >>> np.empty( (2,3) ) # uninitialized, output may vary array([[ 3.73603959e-262, 6.02658058e-154, 6.55490914e-260], [ 5.30498948e-313, 3.14673309e-307, 1.00000000e+000]])

Để tạo một chuỗi các số, Numpy cấp hàm tương tự như range trả về array thay
 vì list.
>>> np.arange( 10, 30, 5 ) array([10, 15, 20, 25]) >>> np.arange( 0, 2, 0.3 ) # it accepts float arguments array([ 0. , 0.3, 0.6, 0.9, 1.2, 1.5, 1.8])

Hàm arange thường được sử dụng với các argument động, nên khó mà đoán được
số các phần tử chứa trong nó, hoặc xác định độ chính xác của điểm động đó.
Vì thế, sẽ tốt hơn nếu ta sử dụng hàm linspace nhận được argument là số các
phần tử mà chúng ta muốn có, ví dụ:
>>> from numpy import pi >>> np.linspace( 0, 2, 9 ) # 9 numbers from 0 to 2 array([ 0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ]) >>> x = np.linspace( 0, 2*pi, 100 ) # useful to evaluate function
at lots of points
>>> f = np.sin(x)











Comments