Để tính sai phân rời rạc cấp n, sử dụng phương thức numpy.diff(). Sai phân đầu tiên được cho bởi out[i] = a[i+1] - a[i] dọc theo trục đã cho, các sai phân cao hơn được tính bằng cách sử dụng diff đệ quy. Phương thức diff() trả về các sai phân cấp n. Hình dạng đầu ra giống với a ngoại trừ dọc theo trục nơi chiều nhỏ hơn n. Kiểu của đầu ra giống với kiểu của hiệu giữa hai phần tử bất kỳ của a. Trong hầu hết các trường hợp giống với kiểu của a. Ngoại lệ đáng chú ý là datetime64, cho ra mảng đầu ra timedelta64.
Tham số thứ nhất là mảng đầu vào. Tham số thứ hai là n, số lần giá trị được sai phân. Nếu bằng 0, đầu vào được trả về như gốc. Tham số thứ ba là trục dọc theo đó sai phân được lấy, mặc định là trục cuối. Tham số thứ tư là các giá trị để prepend hoặc append vào mảng đầu vào dọc theo trục trước khi thực hiện sai phân. Các giá trị scalar được mở rộng thành mảng độ dài 1 theo hướng trục và hình dạng mảng đầu vào theo các trục khác.
Các bước thực hiện
Trước tiên, nhập thư viện cần thiết:
import numpy as np
Tạo mảng NumPy bằng phương thức array(). Chúng ta thêm các phần tử kiểu int với NaN:
arr = np.array([10, 15, 30, 65, 80, 87, np.nan])
Hiển thị mảng:
print("Mảng của chúng ta...\n", arr)
Kiểm tra số chiều:
print("\nSố chiều của mảng...\n", arr.ndim)
Lấy kiểu dữ liệu:
print("\nKiểu dữ liệu của đối tượng mảng...\n", arr.dtype)
Để tính sai phân rời rạc cấp n, sử dụng numpy.diff() (mặc định axis=-1, n=1):
print("\nSai phân rời rạc..\n", np.diff(arr))
Ví dụ hoàn chỉnh
import numpy as np
# Tạo mảng NumPy bằng array()
# Thêm các phần tử kiểu int với nan
arr = np.array([10, 15, 30, 65, 80, 87, np.nan])
# Hiển thị mảng
print("Mảng của chúng ta...\n", arr)
# Kiểm tra số chiều
print("\nSố chiều của mảng...\n", arr.ndim)
# Lấy kiểu dữ liệu
print("\nKiểu dữ liệu của đối tượng mảng...\n", arr.dtype)
# Tính sai phân (mặc định axis=-1, n=1)
print("\nSai phân rời rạc..\n", np.diff(arr))
Kết quả đầu ra
Mảng của chúng ta...
[10. 15. 30. 65. 80. 87. nan]
Số chiều của mảng...
1
Kiểu dữ liệu của đối tượng mảng...
float64
Sai phân rời rạc..
[ 5. 15. 35. 15. 7. nan]
Giải thích: Sai phân bậc 1 mặc định (n=1, axis=-1): out[i] = arr[i+1] - arr[i].
- 15-10 = 5
- 30-15 = 15
- 65-30 = 35
- 80-65 = 15
- 87-80 = 7
- NaN-87 = NaN