Để tính tổng tích lũy (cumulative sum) của các phần tử mảng theo trục cho trước, coi các giá trị NaN như 0, sử dụng numpy.nancumsum(). Khi gặp NaN, tổng không thay đổi; NaN ở đầu được thay bằng 0. Các slice toàn NaN hoặc rỗng trả về 0.
Tham số
- a (array_like): Mảng đầu vào.
- axis (int, tùy chọn): Trục tính tổng tích lũy. Mặc định None (làm phẳng mảng).
- dtype (dtype, tùy chọn): Kiểu dữ liệu mảng kết quả và bộ tích lũy.
- out (ndarray, tùy chọn): Mảng đầu ra thay thế, phải cùng hình dạng và độ dài buffer.
Các bước thực hiện
Nhập NumPy và tạo mảng chứa NaN:
import numpy as np
arr = np.array([10, 20, 30, 40, np.nan])
print("Mảng của chúng ta...\n", arr)
print("\nSố chiều...\n", arr.ndim)
print("\nKiểu dữ liệu...\n", arr.dtype)
# Tính tổng tích lũy coi NaN như 0
print("\nTổng tích lũy phần tử mảng...\n", np.nancumsum(arr))
Ví dụ hoàn chỉnh
import numpy as np
arr = np.array([10, 20, 30, 40, np.nan])
print("Mảng của chúng ta...\n", arr)
print("\nSố chiều...\n", arr.ndim)
print("\nKiểu dữ liệu...\n", arr.dtype)
print("\nTổng tích lũy phần tử mảng...\n", np.nancumsum(arr))
Kết quả đầu ra
Mảng của chúng ta...
[10. 20. 30. 40. nan]
Số chiều...
1
Kiểu dữ liệu...
float64
Tổng tích lũy phần tử mảng...
[ 10. 30. 60. 100. 100.]
Giải thích: 10, 10+20=30, 30+30=60, 60+40=100, NaN coi như 0 nên giữ nguyên 100.