Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

คืนค่า cumulative sum ของอาร์เรย์ตาม axis 1 ถือ NaN เป็นศูนย์ใน Python


ภาพรวม

ใช้ numpy.nancumsum() คำนวณ cumulative sum ตาม axis=1 โดยถือ NaN เป็น 0 cumulative sum ไม่เปลี่ยนเมื่อเจอ NaN leading NaN กลายเป็น 0

หมายเหตุ: บทความต้นฉบับอ้าง nancumprod() ผิด ควรเป็น nancumsum()

พารามิเตอร์

  • a: อาร์เรย์อินพุท
  • axis: axis ที่คำนวณ (default None = flattened)
  • dtype (optional): dtype ของผลลัพธ์และ accumulator
  • out (optional): อาร์เรย์ output ทางเลือก

ขั้นตอนการทำงาน

1. นำเข้า NumPy

import numpy as np

2. สร้างอาร์เรย์ 2D พร้อม NaN

arr = np.array([[10, 20, 30], [40, np.nan, 60]])

3. แสดงข้อมูลอาร์เรย์

print("Our Array...\n", arr)
print("\nDimensions of our Array...\n", arr.ndim)
print("\nDatatype of our Array object...\n", arr.dtype)

4. คำนวณ cumulative sum ตาม axis=1

print("\nCumulative Sum of array elements...\n", np.nancumsum(arr, axis=1))

ตัวอย่างโค้ดเต็ม

import numpy as np
arr = np.array([[10, 20, 30], [40, np.nan, 60]])
print("Our Array...\n", arr)
print("\nDimensions of our Array...\n", arr.ndim)
print("\nDatatype of our Array object...\n", arr.dtype)
print("\nCumulative Sum of array elements...\n", np.nancumsum(arr, axis=1))

ผลลัพธ์

Our Array...
[[10. 20. 30.]
 [40. nan 60.]]
Dimensions of our Array...
2
Datatype of our Array object... float64
Cumulative Sum of array elements...
[[ 10.  30.  60.]
 [ 40.  40. 100.]]

คำอธิบาย: Row 1: 10, 30, 60 (ปกติ) Row 2: 40, 40+NaN(=0)=40, 40+60=100