NumPy 数组迭代
- หน้าก่อนหน้า NumPy 数组重塑
- หน้าต่อไป NumPy 数组连接
วนลูปแนว
วนลูปหมายถึงการวนลูปผ่านองค์ประกอบ
เมื่อเราจัดการกับแนวมาตรฐานใน numpy พวกเราสามารถใช้วนลูปพื้นฐานของ python ที่มีความหมายนี้เพื่อทำการนี้
หากพวกเราวนลูปแนวที่มีขนาด 1 มิติ มันจะวนลูปผ่านแนวทุกๆ องค์ประกอบ
ตัวอย่าง
วนลูปองค์ประกอบของแนวที่มีขนาด 1 มิติ
import numpy as np arr = np.array([1, 2, 3]) for x in arr: print(x)
วนลูปแนวที่มีขนาด 2 มิติ
ในแนวที่มีขนาด 2 มิติ มันจะวนลูปผ่านแนวที่มีขนาด 1 มิติทุกๆ แนว
ตัวอย่าง
วนลูปองค์ประกอบของแนวที่มีขนาด 2 มิติต่อไปนี้:
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) for x in arr: print(x)
หากพวกเราวนลูปแนวที่มีขนาด n มันจะวนลูปผ่านขนาด 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 มิติ
ในแนวที่มีขนาด 3 มิติ มันจะวนลูปผ่านแนวที่มีขนาด 2 มิติทุกๆ แนว
ตัวอย่าง
วนลูปผ่านองค์ประกอบของแนวที่มีขนาด 3 มิติต่อไปนี้:
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
วนลูปนี้อาจยากที่จะเขียนเมื่อมีแนวที่มีขนาดสูง
ตัวอย่าง
วนลูปผ่านแนวที่มีขนาด 3 มิติต่อไปนี้:
import numpy as np arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) for x in np.nditer(arr): print(x)
วนลูปสำหรับแนวที่มีประเภทข้อมูลต่างๆ
เราสามารถใช้ 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)
วนลูปด้วยระยะทางต่างกัน
เราสามารถใช้การกรองและวนลูปต่อไป
ตัวอย่าง
ในแต่ละการวนลูป ทุกครั้งเราเข้าถึงตัวเลขหนึ่งในแอร์เรย์ 2D และข้ามลงหนึ่งตัวเลข
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)
ตัวอย่าง
นับแอร์เอลาย์มองในแอร์เรย์ 2D ดังนี้:
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)
- หน้าก่อนหน้า NumPy 数组重塑
- หน้าต่อไป NumPy 数组连接