Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tính tổng tích lũy mảng, coi NaN như 0 trong Python

Để 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.