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

การหาผลรวมสะสมของอาร์เรย์ถือ NaN เป็นศูนย์และเปลี่ยนชนิดผลลัพธ์ใน Python


บทนำ

เพื่อส่งคืนผลรวมสะสม (cumulative sum) ขององค์ประกอบอาร์เรย์ตามแกนที่กำหนด โดยถือ NaN เป็นศูนย์ ให้ใช้เมธอด numpy.nancumsum() ผลรวมสะสมไม่เปลี่ยนแปลงเมื่อเจอ NaN และ NaN นำหน้าจะถูกแทนที่ด้วยศูนย์ ส่งคืนศูนย์สำหรับสไลด์ที่เป็น NaN ทั้งหมดหรือว่างเปล่า

พารามิเตอร์แรกคืออาร์เรย์อินพุท พารามิเตอร์ที่สองคือแกนที่คำนวณผลรวมสะสม ค่าเริ่มต้น (None) คือคำนวณ cumsum บนอาร์เรย์ที่แบน (flattened) พารามิเตอร์ที่สามคือชนิดของอาร์เรย์ที่ส่งคืนและของตัวสะสม (accumulator) ที่องค์ประกอบถูกบวกกัน หาก dtype ไม่ได้ระบุ จะใช้ค่าเริ่มต้นเป็น dtype ของ a เว้นแต่ a จะมี dtype เป็นจำนวนเต็มที่มีความแม่นยำน้อยกว่าจำนวนเต็มของแพลตฟอร์มเริ่มต้น ในกรณีนั้น จำนวนเต็มของแพลตฟอร์มเริ่มต้นจะถูกใช้ พารามิเตอร์ที่สี่คืออาร์เรย์เอาต์พุททางเลือกสำหรับวางผลลัพธ์ ต้องมีรูปร่างและความยาวบัฟเฟอร์เหมือนกับเอาต์พุทที่คาดหวัง แต่ชนิดจะถูกแปลงหากจำเป็น

ขั้นตอน

ขั้นแรก ให้นำเข้าไลบรารีที่จำเป็น:

import numpy as np

สร้างอาร์เรย์ NumPy โดยใช้เมธอด array() เราได้เพิ่มองค์ประกอบแบบ int พร้อมกับ nan:

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

แสดงอาร์เรย์:

print("อาร์เรย์ของเรา...\n", arr)

ตรวจสอบมิติ:

print("\nมิติของอาร์เรย์...\n", arr.ndim)

ดูชนิดข้อมูล:

print("\nชนิดข้อมูลของออบเจกต์อาร์เรย์...\n", arr.dtype)

เพื่อส่งคืนผลรวมสะสมขององค์ประกอบอาร์เรย์ตามแกนที่กำหนด โดยถือ NaN เป็นศูนย์ ให้ใช้เมธอด nancumsum() ผลรวมสะสมไม่เปลี่ยนแปลงเมื่อเจอ NaN และ NaN นำหน้าจะถูกแทนที่ด้วยศูนย์:

print("\nผลรวมสะสมขององค์ประกอบอาร์เรย์...\n", np.nancumsum(arr, axis=1, dtype=int))

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

import numpy as np
# สร้างอาร์เรย์ NumPy โดยใช้เมธอด array()
# เราได้เพิ่มองค์ประกอบแบบ int พร้อมกับ nan
arr = np.array([[10, 20, 30], [40, np.nan, 60]])
# แสดงอาร์เรย์
print("อาร์เรย์ของเรา...\n", arr)
# ตรวจสอบมิติ
print("\nมิติของอาร์เรย์...\n", arr.ndim)
# ดูชนิดข้อมูล
print("\nชนิดข้อมูลของออบเจกต์อาร์เรย์...\n", arr.dtype)
# เพื่อส่งคืนผลรวมสะสมขององค์ประกอบอาร์เรย์ตามแกนที่กำหนด โดยถือ NaN เป็นศูนย์ ใช้ nancumsum() เมธอด
print("\nผลรวมสะสมขององค์ประกอบอาร์เรย์...\n", np.nancumsum(arr, axis=1, dtype=int))

ผลลัพธ์

อาร์เรย์ของเรา...
 [[10. 20. 30.]
 [40. nan 60.]]
มิติของอาร์เรย์...
 2
ชนิดข้อมูลของออบเจกต์อาร์เรย์...
 float64
ผลรวมสะสมขององค์ประกอบอาร์เรย์...
 [[ 10 30 60]
 [ 40 40 100]]