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

การหาผลคูณสะสม (cumulative product) ถือ NaN เป็น 1 และเปลี่ยนชนิดผลลัพธ์ใน Python


ภาพรวม

ใช้ numpy.nancumprod() เพื่อหาผลคูณสะสมของสมาชิกอาร์เรย์ตามแกนที่กำหนด โดยถือ NaN เป็น 1 ผลคูณสะสมไม่เปลี่ยนเมื่อเจอ NaN และ NaN นำหน้าจะถูกแทนที่ด้วย 1

พารามิเตอร์

  • a: อาร์เรย์อินพุต
  • axis: แกนที่คำนวณผลคูณสะสม (ค่าเริ่มต้น: flatten)
  • dtype: ชนิดข้อมูลของอาร์เรย์ผลลัพธ์และตัวสะสม
  • out: อาร์เรย์ทางเลือกสำหรับเก็บผลลัพธ์

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

  1. นำเข้าไลบรารี
    import numpy as np
    
  2. สร้างอาร์เรย์ที่มี NaN
    arr = np.array([[5, 10, 15], [20, np.nan, 30]])
    
  3. ตรวจสอบคุณสมบัติ
    print("อาร์เรย์ของเรา...\n", arr)
    print("\nมิติ...\n", arr.ndim)
    print("\nชนิดข้อมูล...\n", arr.dtype)
    
  4. คำนวณผลคูณสะสมแกน 1 พร้อม dtype=int
    print("\nผลคูณสะสมของสมาชิกอาร์เรย์...\n", np.nancumprod(arr, axis=1, dtype=int))
    

ตัวอย่างโค้ดสมบูรณ์

import numpy as np

arr = np.array([[5, 10, 15], [20, np.nan, 30]])
print("อาร์เรย์ของเรา...\n", arr)
print("\nมิติของอาร์เรย์...\n", arr.ndim)
print("\nชนิดข้อมูลของอาร์เรย์...\n", arr.dtype)

print("\nผลคูณสะสมของสมาชิกอาร์เรย์...\n", np.nancumprod(arr, axis=1, dtype=int))

ผลลัพธ์ที่คาดหวัง

อาร์เรย์ของเรา...
 [[ 5. 10. 15.]
 [20. nan 30.]]
มิติของอาร์เรย์...
 2
ชนิดข้อมูลของอาร์เรย์...
 float64
ผลคูณสะสมของสมาชิกอาร์เรย์...
 [[  5  50 750]
 [ 20  20 600]]