Pandas & NumPy Academy · บทเรียน

แอตทริบิวต์และการตรวจสอบอาร์เรย์

สำรวจแอตทริบิวต์ ndim, shape, size และ dtype และเรียนรู้การปรับรูปร่างอาร์เรย์ด้วย reshape()

บทเรียน 2 จาก 413 ขั้นตอน

แอตทริบิวต์และการตรวจสอบอาร์เรย์ เป็นบทเรียน 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)  # int64

ndim: จำนวนมิติ

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)   # 3

shape: ทูเพิลของขนาดแต่ละมิติ

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 7

size: จำนวนสมาชิกทั้งหมด

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 bytes

dtype: ชนิดข้อมูลของสมาชิก

ชนิดข้อมูล บอกชนิดของสมาชิกแต่ละตัว ส่วน 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 bytes

nbytes: การใช้หน่วยความจำทั้งหมด

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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การสร้างอาร์เรย์ NumPy
  2. แอตทริบิวต์และการตรวจสอบอาร์เรย์
  3. การคำนวณทีละสมาชิก
  4. การตัดแบ่งและการใช้ดัชนีอาร์เรย์
← กลับไปที่ Pandas & NumPy Academy