0Pricing
Python Academy · บทเรียน

อาร์เรย์ NumPy และ dtypes

สร้าง ndarray ทำความเข้าใจ dtypes และสำรวจคุณสมบัติของอาร์เรย์

อาร์เรย์ NumPy และ dtypes เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

NumPy คืออะไร

NumPy มี ndarray ซึ่งเป็นอาร์เรย์ที่มีชนิดข้อมูลตายตัวและใช้หน่วยความจำต่อเนื่อง รองรับการดำเนินการแบบเวกเตอร์ที่เร็วกว่าอาร์เรย์ของ Python หลายระดับขนาด

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
print(arr)          # [1 2 3 4 5]
print(arr * 2)      # [ 2  4  6  8 10]   (no Python loop)

การสร้างอาร์เรย์

ฟังก์ชันสำหรับสร้างอาร์เรย์ที่ใช้บ่อย ได้แก่ np.array(), np.zeros(), np.ones(), np.arange(), np.linspace()

import numpy as np

print(np.zeros((2, 3)))     # 2x3 array of 0.0
print(np.ones(5))           # [1. 1. 1. 1. 1.]
print(np.arange(0, 10, 2))  # [0 2 4 6 8]
print(np.linspace(0, 1, 5)) # [0.   0.25 0.5  0.75 1.  ]

ชนิดข้อมูล

อาร์เรย์ NumPy ทุกอาร์เรย์มี dtype เพียงชนิดเดียว ชนิดข้อมูลที่ใช้บ่อย ได้แก่ int32, int64, float32, float64, bool, complex128

import numpy as np

a = np.array([1, 2, 3])           # int64 by default
b = np.array([1.0, 2.0])          # float64
c = np.array([1, 2], dtype=np.float32)

print(a.dtype)  # int64
print(c.dtype)  # float32

รูปร่างอาร์เรย์และจำนวนมิติ

shape คือลำดับทูเพิลที่ระบุขนาดของแต่ละมิติ ndim คือจำนวนมิติ และ size คือจำนวนสมาชิกทั้งหมด

import numpy as np

m = np.ones((3, 4))
print(m.shape)   # (3, 4)
print(m.ndim)    # 2
print(m.size)    # 12
print(m.dtype)   # float64

การเปลี่ยนรูปร่าง

reshape() ส่งคืนมุมมองที่มีรูปร่างใหม่ โดยใช้ข้อมูลชุดเดิม ส่วน flatten() ส่งคืนสำเนาเป็นอาร์เรย์ 1 มิติ

import numpy as np

arr = np.arange(12)
mat = arr.reshape(3, 4)
print(mat)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]
print(mat.flatten())   # [ 0  1  2  3 ...]

การแปลงชนิดข้อมูล

ใช้ arr.astype(dtype) เพื่อแปลงอาร์เรย์เป็นชนิดข้อมูลอื่น การดำเนินการนี้จะส่งคืนสำเนาเสมอ

import numpy as np

arr = np.array([1, 2, 3])
float_arr = arr.astype(np.float64)
print(float_arr)   # [1. 2. 3.]
print(float_arr.dtype)   # float64

อาร์เรย์สุ่ม

สร้างอาร์เรย์สุ่มด้วย np.random ได้ทั้งการแจกแจงแบบสม่ำเสมอ แบบปกติ และจำนวนเต็ม

import numpy as np

rng = np.random.default_rng(seed=42)   # reproducible
print(rng.random(5))         # 5 uniform [0,1)
print(rng.standard_normal(3)) # 3 normal(0,1)
print(rng.integers(1, 10, 4)) # 4 ints [1,10)

การตรวจสอบหน่วยความจำของอาร์เรย์

itemsize ระบุจำนวนไบต์ต่อสมาชิก ส่วน nbytes ระบุจำนวนไบต์ทั้งหมด

import numpy as np

arr = np.zeros(1_000_000, dtype=np.float64)
print(arr.itemsize)   # 8
print(arr.nbytes)     # 8_000_000 (8 MB)

small = arr.astype(np.float32)
print(small.nbytes)   # 4_000_000 (4 MB)

np.empty และ np.full

np.empty จัดสรรหน่วยความจำโดยไม่กำหนดค่าเริ่มต้น จึงทำงานได้รวดเร็ว ส่วน np.full เติมค่าคงที่ให้สมาชิกทั้งหมด

import numpy as np

e = np.empty((2,3))          # uninitialised — random garbage values
f = np.full((2,3), fill_value=7)
print(f)
# [[7 7 7]
#  [7 7 7]]

สำเนากับมุมมอง

การตัดแบ่งอาร์เรย์ NumPy จะส่งคืนมุมมองโดยไม่สร้างสำเนา การแก้ไขมุมมองจึงแก้ไขอาร์เรย์ต้นฉบับด้วย ใช้ .copy() หากต้องการอาร์เรย์ที่เป็นอิสระ

import numpy as np

arr = np.array([1, 2, 3, 4])
view = arr[1:3]
view[0] = 99
print(arr)    # [ 1 99  3  4]  — original changed!

copy = arr[1:3].copy()
copy[0] = 0
print(arr)    # unchanged

อาร์เรย์แบบมีโครงสร้าง

อาร์เรย์แบบมีโครงสร้างจัดเก็บข้อมูลต่างชนิดกัน (คล้าย struct ของ C) ไว้ใน ndarray เดียว โดยมีฟิลด์ที่ตั้งชื่อได้

import numpy as np

dt = np.dtype([('name', 'U10'), ('age', np.int32), ('score', np.float64)])
people = np.array([
    ('Alice', 30, 95.5),
    ('Bob',   25, 87.3),
], dtype=dt)
print(people['name'])   # ['Alice' 'Bob']

ตรวจสอบอย่างรวดเร็ว

arr.reshape(3, 4) ส่งคืนอะไร

สรุปทบทวน

ndarray ของ NumPy เป็นอาร์เรย์ที่มีชนิดข้อมูลตายตัวและใช้หน่วยความจำต่อเนื่อง แอตทริบิวต์สำคัญ ได้แก่ shape, dtype, ndim และ nbytes การตัดแบ่งจะส่งคืนมุมมอง หากต้องการความเป็นอิสระให้ใช้ .copy() เลือกชนิดข้อมูลที่เล็กที่สุดเท่าที่เพียงพอเพื่อประหยัดหน่วยความจำ

คำถามที่พบบ่อย

บทเรียน “อาร์เรย์ NumPy และ dtypes” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “อาร์เรย์ NumPy และ dtypes” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “อาร์เรย์ NumPy และ dtypes”

สร้าง ndarray ทำความเข้าใจ dtypes และสำรวจคุณสมบัติของอาร์เรย์ คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “อาร์เรย์ NumPy และ dtypes” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม

ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

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