NumPy ใช้ฟังก์ชัน

Numpy Chi Fangkchan



ไลบรารีในตัวที่นำเสนอโดย Python หรือที่เรียกว่า NumPy ช่วยให้เราสามารถสร้างอาร์เรย์หลายมิติ แก้ไข และดำเนินการคำนวณทางคณิตศาสตร์ต่างๆ ได้ ฟังก์ชัน Apply ยังมีให้ในแพ็คเกจ NumPy กรณีการใช้งานทั่วไปสำหรับฟังก์ชัน Apply จะคล้ายกับสถานการณ์ที่เราต้องการที่จะแบ่งอาร์เรย์และดำเนินการบางอย่างกับแต่ละองค์ประกอบของรายการ ตัวอย่างเช่น หากเราต้องการยกกำลังสองออกจากแต่ละรายการในแถว แน่นอน ใน Python เรารู้ว่า for-loop นั้นช้า ดังนั้นเราจึงต้องการหลีกเลี่ยงหากเป็นไปได้ คุณสามารถใช้ฟังก์ชัน 'ใช้' หากคุณต้องการดำเนินการแบบเดียวกันในแต่ละแถวหรือคอลัมน์ของกรอบข้อมูล กล่าวอีกนัยหนึ่ง มันทำในสิ่งที่คุณต้องการทำด้วย for-loop โดยไม่ต้องเขียน for-loop

มีสองวิธีในการใช้ฟังก์ชันใดๆ กับอาร์เรย์ขึ้นอยู่กับเงื่อนไข เราสามารถใช้ฟังก์ชัน 'apply over the Axis' ซึ่งมีประโยชน์เมื่อเรานำฟังก์ชันนี้ไปใช้กับแต่ละองค์ประกอบของอาร์เรย์ทีละรายการ และมีประโยชน์สำหรับอาร์เรย์ n-dimensional วิธีที่สองคือ “ใช้ตามแนวแกน” ซึ่งใช้กับอาร์เรย์แบบหนึ่งมิติ

ไวยากรณ์:

วิธีที่ 1: ใช้ตามแนวแกน

งี่เง่า apply_along_axis ( 1d_function , แกน , arr , *args , **ควาร์ก )

ในไวยากรณ์ เรามีฟังก์ชัน 'numpy.apply' ซึ่งเราส่งผ่านอาร์กิวเมนต์ห้ารายการ อาร์กิวเมนต์ตัวแรกซึ่งก็คือ '1d_function' ทำงานบนอาร์เรย์หนึ่งมิติ ซึ่งจำเป็น ในขณะที่อาร์กิวเมนต์ที่สอง 'แกน' เป็นอาร์กิวเมนต์ที่คุณต้องการแบ่งอาร์เรย์และใช้ฟังก์ชันนั้น พารามิเตอร์ที่สามคือ 'arr' ซึ่งเป็นอาร์เรย์ที่กำหนดซึ่งเราต้องการใช้ฟังก์ชัน ในขณะที่ “*args” และ “*kwargs” เป็นอาร์กิวเมนต์เพิ่มเติมที่ไม่จำเป็นต้องเพิ่ม







ตัวอย่างที่ 1:

เพื่อทำความเข้าใจวิธีการ 'นำไปใช้' ให้ดีขึ้น เราได้ทำตัวอย่างเพื่อตรวจสอบการทำงานของวิธีการสมัคร ในกรณีนี้ เราดำเนินการฟังก์ชัน “apply_along_Axis” ไปที่ขั้นตอนแรกของเรา ก่อนอื่นเรารวมไลบรารี NumPy ของเราเป็น np จากนั้น เราสร้างอาร์เรย์ชื่อ 'arr' ซึ่งเก็บเมทริกซ์ขนาด 3×3 ที่มีค่าจำนวนเต็ม ได้แก่ '8, 1, 7, 4, 3, 9, 5, 2 และ 6' ในบรรทัดถัดไป เราสร้างตัวแปรชื่อ 'array' ซึ่งมีหน้าที่เก็บผลลัพธ์ของฟังก์ชัน apply_along_Axis



สำหรับฟังก์ชันนั้น เราส่งผ่านอาร์กิวเมนต์สามตัว ฟังก์ชันแรกคือฟังก์ชันที่เราต้องการนำไปใช้กับอาร์เรย์ ในกรณีของเราคือฟังก์ชันที่จัดเรียงเนื่องจากเราต้องการจัดเรียงอาร์เรย์ของเรา จากนั้นเราส่งอาร์กิวเมนต์ที่สอง '1' ซึ่งหมายความว่าเราต้องการแบ่งอาร์เรย์ของเราตามแกน = 1 Laslty เราส่งอาร์เรย์ที่จะจัดเรียงในกรณีนี้ ในตอนท้ายของโค้ด เราเพียงแค่พิมพ์ทั้งอาร์เรย์ - อาร์เรย์ดั้งเดิมและอาร์เรย์ผลลัพธ์ - ซึ่งแสดงโดยใช้คำสั่ง print()



นำเข้า งี่เง่า เช่น เช่น.

arr = เช่น. อาร์เรย์ ( [ [ 8 , 1 , 7 ] , [ 4 , 3 , 9 ] , [ 5 , สอง , 6 ] ] )

อาร์เรย์ = เช่น. apply_along_axis ( จัดเรียง , 1 , arr )

พิมพ์ ( 'อาร์เรย์ดั้งเดิมคือ:' , arr )

พิมพ์ ( 'อาร์เรย์ที่เรียงลำดับคือ:' , อาร์เรย์ )





ดังที่เราเห็นในผลลัพธ์ต่อไปนี้ เราแสดงทั้งสองอาร์เรย์ ในอันแรก ค่าจะถูกสุ่มวางในแต่ละแถวของเมทริกซ์ แต่ในอันที่สอง เราจะเห็น sorted array เนื่องจากเราผ่านแกน '1' จึงไม่จัดเรียงอาร์เรย์ทั้งหมด แต่จะจัดเรียงตามแถวตามที่แสดง แต่ละแถวจะถูกจัดเรียง แถวแรกในอาร์เรย์ที่กำหนดคือ '8, 1 และ 7' ขณะที่อยู่ในอาร์เรย์ที่จัดเรียง แถวแรกคือ “1, 7 และ 8” เหมือนกันทุกแถวเรียงตามนี้



วิธีที่ 2: ใช้เหนือแกน

งี่เง่า apply_over_axes ( func , เอ , แกน )

ในไวยากรณ์ที่กำหนด เรามีฟังก์ชัน numpy.apply_over_axis ซึ่งมีหน้าที่ในการใช้ฟังก์ชันบนแกนที่กำหนด ภายในฟังก์ชัน apply_over_axis เราส่งผ่านสามอาร์กิวเมนต์ อันแรกเป็นหน้าที่ที่ต้องทำ อันที่สองคืออาร์เรย์ตัวเอง และอันสุดท้ายคือแกนที่เราต้องการใช้ฟังก์ชันนี้

ตัวอย่างที่ 2:

ในกรณีต่อไปนี้ เราใช้วิธีที่สองของฟังก์ชัน 'ใช้' ซึ่งเราคำนวณผลรวมของอาร์เรย์สามมิติ สิ่งหนึ่งที่ต้องจำไว้คือผลรวมของสองอาร์เรย์ไม่ได้หมายความว่าเราคำนวณทั้งอาร์เรย์ ในบางอาร์เรย์ เราคำนวณผลรวมแบบแถวซึ่งหมายความว่าเราเพิ่มแถวและดึงองค์ประกอบเดี่ยวออกมา

ไปที่โค้ดของเรากัน ก่อนอื่นเรานำเข้าแพ็คเกจ NumPy จากนั้นสร้างตัวแปรที่เก็บอาร์เรย์สามมิติ ในกรณีของเรา ตัวแปรคือ 'arr' ในบรรทัดถัดไป เราสร้างตัวแปรอื่นที่เก็บอาร์เรย์ผลลัพธ์ของฟังก์ชัน apply_over_axis เรากำหนดฟังก์ชัน apply_over_Axis ให้กับตัวแปร 'arr' ด้วยอาร์กิวเมนต์สามตัว อาร์กิวเมนต์แรกคือฟังก์ชันในตัวของ NumPy เพื่อคำนวณผลรวมซึ่งเป็น np.sum พารามิเตอร์ที่สองคืออาร์เรย์เอง อาร์กิวเมนต์ที่สามคือแกนที่ใช้ฟังก์ชัน ในกรณีนี้ เรามีแกน “[0, 2]” ในตอนท้ายของโค้ด เรารันทั้งสองอาร์เรย์โดยใช้คำสั่ง print()

นำเข้า งี่เง่า เช่น เช่น.

arr = เช่น. อาร์เรย์ ( [ [ [ 6 , 12 , สอง ] , [ สอง , 9 , 6 ] , [ 18 , 0 , 10 ] ] ,

[ [ 12 , 7 , 14 ] , [ สอง , 17 , 18 ] , [ 0 , ยี่สิบเอ็ด , 8 ] ] ] )

อาร์เรย์ = เช่น. apply_over_axes ( เช่น. ผลรวม , arr , [ 0 , สอง ] )

พิมพ์ ( 'อาร์เรย์ดั้งเดิมคือ:' , arr )

พิมพ์ ( 'ผลรวมของอาร์เรย์คือ:' , อาร์เรย์ )

ดังที่แสดงในรูปต่อไปนี้ เราคำนวณอาร์เรย์สามมิติบางส่วนของเราโดยใช้ฟังก์ชัน apply_over_axis อาร์เรย์ที่แสดงครั้งแรกคืออาร์เรย์ดั้งเดิมที่มีรูปร่างเป็น '2, 3, 3' และอาร์เรย์ที่สองคือผลรวมของแถว ผลรวมของแถวแรกคือ '53' แถวที่สองคือ '54' และแถวสุดท้ายคือ '57'

บทสรุป

ในบทความนี้ เราศึกษาวิธีการใช้ฟังก์ชัน Apply ใน NumPy และวิธีที่เราจะนำฟังก์ชันต่างๆ ไปใช้กับอาร์เรย์ตามหรือบนแกนได้อย่างไร ง่ายต่อการใช้ฟังก์ชันใด ๆ ในแถวหรือคอลัมน์ที่ต้องการโดยการแบ่งส่วนโดยใช้วิธีการ 'ใช้' ที่ NumPy จัดเตรียมไว้ เป็นวิธีที่มีประสิทธิภาพเมื่อเราไม่ต้องนำไปใช้กับอาร์เรย์ทั้งหมด เราหวังว่าคุณจะพบว่าโพสต์นี้มีประโยชน์ในการเรียนรู้วิธีการใช้วิธีการสมัคร