กวดวิชา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 Iterating


อาร์เรย์การวนซ้ำ

การวนซ้ำหมายถึงการผ่านองค์ประกอบทีละรายการ

ในขณะที่เราจัดการกับอาร์เรย์หลายมิติเป็นจำนวน เราสามารถทำได้โดยใช้ forลูปพื้นฐานของไพ ธ อน

ถ้าเราวนซ้ำในอาร์เรย์ 1-D มันจะผ่านแต่ละองค์ประกอบทีละรายการ

ตัวอย่าง

วนซ้ำองค์ประกอบของอาร์เรย์ 1-D ต่อไปนี้:

import numpy as np

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

for x in arr:
  print(x)

วนซ้ำ 2-D Arrays

ในอาร์เรย์ 2 มิติจะผ่านทุกแถว

ตัวอย่าง

วนซ้ำองค์ประกอบของอาร์เรย์ 2 มิติต่อไปนี้:

import numpy as np

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

for x in arr:
  print(x)

ถ้าเราวนซ้ำใน อาร์เรย์ n -D อาร์เรย์จะผ่านมิติที่ n-1 ทีละรายการ

ในการคืนค่าจริง สเกลาร์ เราต้องวนซ้ำอาร์เรย์ในแต่ละมิติ

ตัวอย่าง

วนซ้ำในแต่ละองค์ประกอบสเกลาร์ของอาร์เรย์ 2 มิติ:

import numpy as np

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

for x in arr:
  for y in x:
    print(y)


วนซ้ำ 3-D Arrays

ในอาร์เรย์ 3 มิติ จะผ่านอาร์เรย์ 2 มิติทั้งหมด

ตัวอย่าง

วนซ้ำองค์ประกอบของอาร์เรย์สามมิติต่อไปนี้:

import numpy as np

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

for x in arr:
  print(x)

ในการคืนค่าจริง สเกลาร์ เราต้องวนซ้ำอาร์เรย์ในแต่ละมิติ

ตัวอย่าง

วนซ้ำลงไปที่สเกลาร์:

import numpy as np

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

for x in arr:
  for y in x:
    for z in y:
      print(z)

การวนซ้ำอาร์เรย์โดยใช้ nditer()

ฟังก์ชันnditer()นี้เป็นฟังก์ชันช่วยเหลือที่สามารถใช้ได้ตั้งแต่การทำซ้ำขั้นพื้นฐานไปจนถึงขั้นสูง มันแก้ปัญหาพื้นฐานบางอย่างที่เราเผชิญในการวนซ้ำ มาดูตัวอย่างกัน

วนซ้ำในแต่ละองค์ประกอบสเกลาร์

ในลูปพื้นฐาน การforวนซ้ำผ่านแต่ละสเกลาร์ของอาร์เรย์ เราจำเป็นต้องใช้ n forลูป ซึ่งอาจเขียนได้ยากสำหรับอาร์เรย์ที่มีมิติสูงมาก

ตัวอย่าง

วนซ้ำผ่านอาร์เรย์สามมิติต่อไปนี้:

import numpy as np

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

for x in np.nditer(arr):
  print(x)

Iterating Array ด้วยประเภทข้อมูลที่แตกต่างกัน

เราสามารถใช้op_dtypesอาร์กิวเมนต์และส่งผ่านประเภทข้อมูลที่คาดไว้เพื่อเปลี่ยนประเภทข้อมูลขององค์ประกอบขณะวนซ้ำ

NumPy จะไม่เปลี่ยนประเภทข้อมูลขององค์ประกอบแบบแทนที่ (โดยที่องค์ประกอบอยู่ในอาร์เรย์) ดังนั้นจึงต้องการพื้นที่อื่นในการดำเนินการนี้ พื้นที่พิเศษนั้นเรียกว่าบัฟเฟอร์ และเพื่อเปิดใช้งานในเราnditer()จึงผ่านflags=['buffered']

ตัวอย่าง

วนซ้ำผ่านอาร์เรย์เป็นสตริง:

import numpy as np

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

for x in np.nditer(arr, flags=['buffered'], op_dtypes=['S']):
  print(x)

วนซ้ำด้วยขนาดขั้นตอนที่ต่างกัน

เราสามารถใช้การกรองและตามด้วยการวนซ้ำ

ตัวอย่าง

วนซ้ำทุกองค์ประกอบสเกลาร์ของอาร์เรย์ 2 มิติโดยข้าม 1 องค์ประกอบ:

import numpy as np

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

for x in np.nditer(arr[:, ::2]):
  print(x)

การวนซ้ำที่แจกแจงโดยใช้ ndenumerate()

การแจงนับหมายถึงการกล่าวถึงหมายเลขลำดับของบางสิ่งทีละรายการ

บางครั้งเราต้องการดัชนีที่สอดคล้องกันขององค์ประกอบในขณะที่วนซ้ำndenumerate()สามารถใช้เมธอดสำหรับกรณีการใช้งานเหล่านั้นได้

ตัวอย่าง

ระบุองค์ประกอบอาร์เรย์ 1D ต่อไปนี้:

import numpy as np

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

for idx, x in np.ndenumerate(arr):
  print(idx, x)

ตัวอย่าง

ระบุองค์ประกอบของอาร์เรย์ 2 มิติต่อไปนี้:

import numpy as np

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

for idx, x in np.ndenumerate(arr):
  print(idx, x)