แอตทริบิวต์และการตรวจสอบอาร์เรย์
สำรวจแอตทริบิวต์ ndim, shape, size และ dtype และเรียนรู้การปรับรูปร่างอาร์เรย์ด้วย reshape()
แอตทริบิวต์และการตรวจสอบอาร์เรย์ เป็นบทเรียน Pandas & NumPy Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Pandas & NumPy Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดแอตทริบิวต์ของอาร์เรย์จึงสำคัญ
ก่อนทำงานกับอาร์เรย์ คุณควรทราบ รูปร่าง จำนวนมิติ และชนิดข้อมูลของอาร์เรย์ NumPy แสดงข้อมูลเหล่านี้ได้ทันทีผ่านแอตทริบิวต์ที่มีขนาดเล็กและใช้งานได้สะดวก
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
print('ndim:', a.ndim) # 2
print('shape:', a.shape) # (2, 3)
print('size:', a.size) # 6
print('dtype:', a.dtype) # int64ndim: จำนวนมิติ
ndim บอกว่าอาร์เรย์มีกี่มิติ ลิสต์แบนมี 1 มิติ ลิสต์ซ้อนลิสต์มี 2 มิติ และเทนเซอร์สำหรับการเรียนรู้ของเครื่องมักมี 3 หรือ 4 มิติ
import numpy as np
v = np.array([1, 2, 3])
print(v.ndim) # 1
m = np.zeros((4, 5))
print(m.ndim) # 2
t = np.ones((2, 3, 4))
print(t.ndim) # 3shape: ทูเพิลของขนาดแต่ละมิติ
shape คือทูเพิลที่มีขนาดของแต่ละมิติ สำหรับอาร์เรย์ 2 มิติ จะเป็น (แถว, คอลัมน์) และคุณสามารถแยกค่าออกมาเพื่อเขียนโค้ดที่ยืดหยุ่นได้
import numpy as np
a = np.arange(24).reshape(2, 3, 4)
print(a.shape) # (2, 3, 4)
n_rows, n_cols = np.zeros((5, 7)).shape
print(n_rows, n_cols) # 5 7size: จำนวนสมาชิกทั้งหมด
size ให้จำนวนสมาชิกทั้งหมด ซึ่งเท่ากับผลคูณของค่าทั้งหมดใน shape มีประโยชน์สำหรับตรวจสอบว่า reshape ไม่ได้ทำให้ข้อมูลสูญหาย
import numpy as np
a = np.ones((3, 4, 5))
print(a.size) # 60 (3*4*5)
print(np.prod(a.shape))# 60
# Memory estimate in bytes
print(a.size * a.itemsize, 'bytes') # 480 bytesdtype: ชนิดข้อมูลของสมาชิก
ชนิดข้อมูล บอกชนิดของสมาชิกแต่ละตัว ส่วน itemsize บอกขนาดเป็นไบต์ การเปลี่ยนจาก float64 เป็น float32 จะลดการใช้หน่วยความจำลงครึ่งหนึ่ง และมักทำงานได้เร็วขึ้น
import numpy as np
a = np.array([1.5, 2.5, 3.5])
print(a.dtype) # float64
print(a.itemsize) # 8 bytes
b = a.astype(np.float32)
print(b.dtype) # float32
print(b.itemsize) # 4 bytesnbytes: การใช้หน่วยความจำทั้งหมด
nbytes คือหน่วยความจำทั้งหมดของอาร์เรย์ในหน่วยไบต์ คำนวณจาก size คูณ itemsize ตรวจสอบค่าก่อนและหลังลดขนาดชนิดข้อมูล เพื่อยืนยันว่าประหยัดพื้นที่ได้จริง
import numpy as np
a = np.ones((1000, 1000), dtype=np.float64)
print(a.nbytes) # 8000000 (8 MB)
b = a.astype(np.float32)
print(b.nbytes) # 4000000 (4 MB)reshape(): การเปลี่ยนรูปร่างอาร์เรย์
reshape เปลี่ยนรูปร่างของอาร์เรย์โดยไม่คัดลอกข้อมูล ตราบใดที่จำนวนสมาชิกยังเท่าเดิม หากส่งค่า -1 ให้ NumPy โปรแกรมจะคำนวณขนาดของมิตินั้นให้
import numpy as np
a = np.arange(12)
print(a.shape) # (12,)
b = a.reshape(3, 4)
print(b.shape) # (3, 4)
c = a.reshape(2, -1) # -1 inferred as 6
print(c.shape) # (2, 6)การทำให้แบนด้วย ravel() และ flatten()
ทั้ง ravel() และ flatten() ทำให้อาร์เรย์เหลือ 1 มิติ ความแตกต่างคือ ravel มักใช้หน่วยความจำร่วมกับอาร์เรย์เดิมโดยไม่คัดลอกข้อมูล ส่วน flatten จะสร้างสำเนาใหม่เสมอ
import numpy as np
m = np.array([[1, 2, 3], [4, 5, 6]])
r = m.ravel() # view (usually)
f = m.flatten() # always a copy
print(r) # [1 2 3 4 5 6]
print(f) # [1 2 3 4 5 6]การสลับแกนอาร์เรย์
แอตทริบิวต์ .T ให้ผลลัพธ์เป็น ทรานสโพส ซึ่งสลับแถวกับคอลัมน์ ไม่ต้องคัดลอกข้อมูลและแทบไม่มีต้นทุน จึงจำเป็นอย่างมากเมื่อต้องจัดแนวเมทริกซ์
import numpy as np
m = np.array([[1, 2, 3], [4, 5, 6]]) # shape (2, 3)
print(m.T.shape) # (3, 2)
print(m.T)
# [[1 4]
# [2 5]
# [3 6]]strides: การจัดวางในหน่วยความจำ
strides แสดงจำนวนไบต์ที่ NumPy ต้องเลื่อนไปในหน่วยความจำสำหรับแต่ละมิติ นี่คือเหตุผลที่การสลับแกนแทบไม่มีต้นทุน เพราะเพียงสลับค่า stride เท่านั้น
import numpy as np
a = np.ones((3, 4), dtype=np.float64)
print(a.strides) # (32, 8) — 4 cols x 8 bytes, 1 col x 8 bytes
b = a.T
print(b.strides) # (8, 32) — strides swapped, no data copyการตรวจสอบวิวกับสำเนา
วิว ใช้หน่วยความจำร่วมกับอาร์เรย์ต้นฉบับ ดังนั้นการเปลี่ยนแปลงอาร์เรย์หนึ่งจะเปลี่ยนอีกอาร์เรย์ด้วย ส่วนสำเนาจะแยกเป็นอิสระ ใช้ np.shares_memory(a, b) เพื่อตรวจสอบว่าคุณกำลังใช้งานแบบใด
import numpy as np
a = np.arange(6)
b = a.reshape(2, 3) # view
print(np.shares_memory(a, b)) # True
c = a.copy()
print(np.shares_memory(a, c)) # Falseตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเรื่องแอตทริบิวต์ของอาร์เรย์ NumPy จากบทเรียนนี้
สรุปบทเรียน
ก้าวหน้าได้ดีมาก ndim, shape และ size อธิบายโครงสร้าง ชนิดข้อมูลอธิบายข้อมูล และ reshape คืนวิวในขณะที่ flatten คัดลอกข้อมูลเสมอ บทถัดไปคือการคำนวณกับอาร์เรย์
เรียนรู้ Python ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 30
- บทเรียน
- 120
คำถามที่พบบ่อย
บทเรียน “แอตทริบิวต์และการตรวจสอบอาร์เรย์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “แอตทริบิวต์และการตรวจสอบอาร์เรย์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Pandas & NumPy Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “แอตทริบิวต์และการตรวจสอบอาร์เรย์”
สำรวจแอตทริบิวต์ ndim, shape, size และ dtype และเรียนรู้การปรับรูปร่างอาร์เรย์ด้วย reshape() คุณปฏิบัติ Pandas & NumPy Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Pandas & NumPy Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Pandas & NumPy Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “แอตทริบิวต์และการตรวจสอบอาร์เรย์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Pandas & NumPy Academy นี้ได้ไหม
ได้ บทเรียน Pandas & NumPy Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้างอาร์เรย์ NumPy
- แอตทริบิวต์และการตรวจสอบอาร์เรย์
- การคำนวณทีละสมาชิก
- การตัดแบ่งและการใช้ดัชนีอาร์เรย์