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

การหาเกรเดียนของอาร์เรย์ N มิติและระบุลำดับขอบใน Python


บทนำ

เกรเดียนถูกคำนวณโดยใช้ความต่างกลางอันดับสองที่แม่นยำ (second order accurate central differences) ที่จุดภายใน และความต่างด้านเดียว (forward หรือ backwards) อันดับหนึ่งหรือสองที่แม่นยำที่ขอบเขต อาร์เรย์เกรเดียนที่ส่งคืนจึงมีรูปร่างเหมือนกับอาร์เรย์อินพุท พารามิเตอร์แรก f คืออาร์เรย์ N มิติที่มีตัวอย่างของฟังก์ชันสเกลาร์ พารามิเตอร์ที่สองคือ varargs คือระยะห่างระหว่างค่า f ค่าเริ่มต้นคือระยะห่างหน่วยสำหรับทุกมิติ

พารามิเตอร์ที่สามคือ edge_order {1, 2} คือ เกรเดียนคำนวณโดยใช้ความต่างอันดับ N ที่แม่นยำที่ขอบเขต ค่าเริ่มต้น: 1 พารามิเตอร์ที่สี่คือ axis เกรเดียนคำนวณเฉพาะตามแกนที่กำหนด ค่าเริ่มต้น (axis=None) คือคำนวณเกรเดียนสำหรับทุกแกนของอาร์เรย์อินพุท axis อาจเป็นลบ ซึ่งนับจากแกนสุดท้ายไปแกนแรก เมธอดส่งคืนรายการของ ndarrays ที่สอดคล้องกับอนุพันธ์ของ f เทียบกับแต่ละมิติ แต่ละอนุพันธ์มีรูปร่างเหมือนกับ f

ขั้นตอน

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

import numpy as np

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

arr = np.array([20, 35, 57, 70, 85, 120], dtype=float)

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

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

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

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

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

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

เกรเดียนถูกคำนวณโดยใช้ความต่างกลางอันดับสองที่แม่นยำที่จุดภายใน และความต่างด้านเดียวอันดับหนึ่งหรือสองที่แม่นยำที่ขอบเขต อาร์เรย์เกรเดียนที่ส่งคืนจึงมีรูปร่างเหมือนกับอาร์เรย์อินพุท:

print("\nผลลัพธ์ (เกรเดียน)...\n", np.gradient(arr, edge_order=2))

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

import numpy as np
# สร้างอาร์เรย์ NumPy โดยใช้เมธอด array()
# เราได้เพิ่มองค์ประกอบแบบ float
arr = np.array([20, 35, 57, 70, 85, 120], dtype=float)
# แสดงอาร์เรย์
print("อาร์เรย์ของเรา...\n", arr)
# ตรวจสอบมิติ
print("\nมิติของอาร์เรย์...\n", arr.ndim)
# ดูชนิดข้อมูล
print("\nชนิดข้อมูลของออบเจกต์อาร์เรย์...\n", arr.dtype)
# เกรเดียนถูกคำนวณโดยใช้ความต่างกลางอันดับสองที่แม่นยำที่จุดภายใน และความต่างด้านเดียวอันดับหนึ่งหรือสองที่แม่นยำที่ขอบเขต
# อาร์เรย์เกรเดียนที่ส่งคืนจึงมีรูปร่างเหมือนกับอาร์เรย์อินพุท
print("\nผลลัพธ์ (เกรเดียน)...\n", np.gradient(arr, edge_order=2))

ผลลัพธ์

อาร์เรย์ของเรา...
 [ 20.  35.  57.  70.  85. 120.]
มิติของอาร์เรย์...
 1
ชนิดข้อมูลของออบเจกต์อาร์เรย์...
 float64
ผลลัพธ์ (เกรเดียน)...
 [11.5 18.5 17.5 14.  25.  45. ]