กวดวิชาNumPy

NumPy HOME แนะนำ NumPy NumPy เริ่มต้นใช้งาน NumPy การสร้างอาร์เรย์ การจัดทำดัชนี NumPy Array NumPy Array Slicing ประเภทข้อมูล NumPy NumPy Copy เทียบกับ View NumPy Array Shape การปรับรูปร่าง NumPy Array NumPy Array Iterating NumPy Array เข้าร่วม NumPy Array Split ค้นหาอาร์เรย์ NumPy NumPy Array Sort ตัวกรองอาร์เรย์ NumPy

NumPyสุ่ม

สุ่มอินโทร การกระจายข้อมูล การเรียงสับเปลี่ยนแบบสุ่ม โมดูล Seaborn การกระจายแบบปกติ การกระจายทวินาม จำหน่ายปลา กระจายสม่ำเสมอ การกระจายโลจิสติกส์ การกระจายพหุนาม การกระจายแบบเอกซ์โพเนนเชียล จิสแควร์ ดิสทริบิวชั่น การกระจาย Rayleigh พาเรโต้ ดิสทริบิวชั่น การกระจาย Zipf

NumPy ufunc

ufunc Intro ufunc สร้างฟังก์ชัน ufunc เลขคณิตอย่างง่าย ufunc การปัดเศษทศนิยม ufunc บันทึก ufunc ผลรวม ufunc ผลิตภัณฑ์ ufunc ความแตกต่าง ufunc ค้นหา LCM ufunc กำลังหา GCD ufunc ตรีโกณมิติ ufunc ไฮเปอร์โบลิก ufunc Set Operations

แบบทดสอบ/แบบฝึกหัด

แบบทดสอบ NumPy แบบฝึกหัด NumPy

การปรับ รูปร่าง NumPy Array


การปรับรูปร่างอาร์เรย์

การปรับรูปร่างหมายถึงการเปลี่ยนรูปร่างของอาร์เรย์

รูปร่างของอาร์เรย์คือจำนวนองค์ประกอบในแต่ละมิติ

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


เปลี่ยนรูปร่างจาก 1-D เป็น 2-D

ตัวอย่าง

แปลงอาร์เรย์ 1-D ที่มี 12 องค์ประกอบต่อไปนี้เป็นอาร์เรย์ 2 มิติ

มิตินอกสุดจะมี 4 อาร์เรย์ แต่ละอันมี 3 องค์ประกอบ:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.reshape(4, 3)

print(newarr)

เปลี่ยนรูปร่างจาก 1-D เป็น 3-D

ตัวอย่าง

แปลงอาร์เรย์ 1-D ที่มี 12 องค์ประกอบต่อไปนี้เป็นอาร์เรย์ 3 มิติ

มิตินอกสุดจะมี 2 อาร์เรย์ที่มี 3 อาร์เรย์แต่ละอันมี 2 องค์ประกอบ:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.reshape(2, 3, 2)

print(newarr)


เราสามารถแปลงร่างเป็นรูปร่างใด ๆ ได้หรือไม่?

ใช่ ตราบใดที่องค์ประกอบที่จำเป็นสำหรับการปรับรูปร่างทั้งสองรูปร่างนั้นเท่ากัน

เราสามารถเปลี่ยนอาร์เรย์ 1D 8 องค์ประกอบเป็น 4 องค์ประกอบในอาร์เรย์ 2D 2 แถวได้ แต่เราไม่สามารถเปลี่ยนรูปร่างเป็นอาร์เรย์ 2D 3 องค์ประกอบ 3 แถว 2D ได้เนื่องจากต้องใช้ 3x3 = 9 องค์ประกอบ

ตัวอย่าง

ลองแปลงอาร์เรย์ 1D ที่มี 8 องค์ประกอบเป็นอาร์เรย์ 2D ที่มี 3 องค์ประกอบในแต่ละมิติ (จะทำให้เกิดข้อผิดพลาด):

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

newarr = arr.reshape(3, 3)

print(newarr)

ส่งคืน Copy หรือ View?

ตัวอย่าง

ตรวจสอบว่าอาร์เรย์ที่ส่งคืนเป็นสำเนาหรือมุมมอง:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

print(arr.reshape(2, 4).base)

ตัวอย่างข้างต้นส่งคืนอาร์เรย์ดั้งเดิม ดังนั้นจึงเป็นมุมมอง


มิติที่ไม่รู้จัก

คุณได้รับอนุญาตให้มีมิติข้อมูล "ที่ไม่รู้จัก" ได้หนึ่งมิติ

หมายความว่าคุณไม่จำเป็นต้องระบุจำนวนที่แน่นอนสำหรับมิติข้อมูลอย่างใดอย่างหนึ่งในวิธีการปรับรูปร่าง

ส่งผ่าน-1เป็นค่า แล้ว NumPy จะคำนวณตัวเลขนี้ให้คุณ

ตัวอย่าง

แปลงอาร์เรย์ 1D ที่มี 8 องค์ประกอบเป็นอาร์เรย์ 3 มิติด้วยองค์ประกอบ 2x2:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

newarr = arr.reshape(2, 2, -1)

print(newarr)

หมายเหตุ:เราไม่สามารถส่งผ่าน-1มากกว่าหนึ่งมิติ


แบนอาร์เรย์

อาร์เรย์ที่แบนราบหมายถึงการแปลงอาร์เรย์หลายมิติเป็นอาร์เรย์ 1 มิติ

เราสามารถใช้reshape(-1)การทำเช่นนี้

ตัวอย่าง

แปลงอาร์เรย์เป็นอาร์เรย์ 1D:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

newarr = arr.reshape(-1)

print(newarr)

หมายเหตุ:มีฟังก์ชันมากมายสำหรับเปลี่ยนรูปร่างของอาร์เรย์ใน numpy flattenและravelสำหรับการจัดเรียงองค์ประกอบrot90ใหม่ , flip, fliplr, flipudฯลฯ สิ่งเหล่านี้อยู่ภายใต้ส่วนระดับกลางถึงขั้นสูงของ numpy


ทดสอบตัวเองด้วยแบบฝึกหัด

ออกกำลังกาย:

ใช้วิธี NumPy ที่ถูกต้องเพื่อเปลี่ยนรูปร่างของอาร์เรย์จาก 1-D เป็น 2-D

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.(4, 3)