Để trả về tổng tích lũy của các phần tử mảng dọc theo trục cho trước coi NaN như 0, sử dụng phương thức numpy.nancumsum(). Tổng tích lũy không thay đổi khi gặp NaN và các NaN ở đầu được thay bằng 0. Trả về 0 cho các slice toàn NaN hoặc rỗng.
Tham số thứ nhất là mảng đầu vào. Tham số thứ hai là trục dọc theo đó tổng tích lũy được tính. Mặc định (None) là tính cumsum trên mảng làm phẳng. Tham số thứ ba là dtype - kiểu của mảng trả về và của bộ tích lũy. Nếu dtype không chỉ định, mặc định là dtype của a, trừ khi a có dtype nguyên với độ chính xác nhỏ hơn nguyên mặc định nền tảng. Trong trường hợp đó, nguyên mặc định nền tảng được dùng. Tham số thứ tư là mảng đầu ra thay thế để đặt kết quả. Phải có cùng hình dạng và độ dài buffer như đầu ra mong đợi nhưng kiểu sẽ được ép nếu cần.
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, 20, 30], [40, np.nan, 60]])
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)
Để trả về tổng tích lũy coi NaN như 0, sử dụng numpy.nancumsum() với axis=1 và dtype=int:
print("\nTổng tích lũy các phần tử mảng...\n", np.nancumsum(arr, axis=1, dtype=int))
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, 20, 30], [40, np.nan, 60]])
# 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ổng tích lũy theo trục 1, NaN=0, dtype=int
print("\nTổng tích lũy các phần tử mảng...\n", np.nancumsum(arr, axis=1, dtype=int))
Kết quả đầu ra
Mảng của chúng ta...
[[10. 20. 30.]
[40. nan 60.]]
Số chiều của mảng...
2
Kiểu dữ liệu của đối tượng mảng...
float64
Tổng tích lũy các phần tử mảng...
[[ 10 30 60]
[ 40 40 100]]
Giải thích: Với axis=1 (theo hàng), dtype=int:
- Hàng 0: cumsum([10,20,30]) = [10, 30, 60]
- Hàng 1: cumsum([40, NaN, 60]) coi NaN=0 → [40, 40+0=40, 40+60=100]