NumPy Array Copy vs View
- หน้าก่อนหน้า NumPy ประเภทข้อมูล
- หน้าต่อไป NumPy รูปแบบแบบตัวแปร
ความแตกต่างระหว่างสำเนาและตัวเลือก
ความแตกต่างหลักระหว่างสำเนาและตัวเลือกของตัวเดิมคือ สำเนาเป็นตัวเลือกใหม่ ในขณะที่ตัวเลือกมีลักษณะเดียวกับตัวเดิม
สำเนามีข้อมูล การเปลี่ยนแปลงในสำเนาจะไม่มีผลกระทบต่อตัวเดิม และการเปลี่ยนแปลงในตัวเดิมจะไม่มีผลกระทบต่อสำเนา
view ไม่มีข้อมูล การเปลี่ยนแปลงที่ทำต่อ view จะมีผลกระทบต่อตัวแปรแบบฉบับ และการเปลี่ยนแปลงที่ทำต่อตัวแปรแบบฉบับจะมีผลกระทบต่อ view
คัดลอก:
ตัวอย่าง
ทำการคัดลอก และเปลี่ยนแปลงตัวแปรแบบฉบับ แล้วแสดงทั้งสองตัวแปร:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) x = arr.copy() arr[0] = 61 print(arr) print(x)
คัดลอกนี้ควรไม่ได้รับผลกระทบจากการเปลี่ยนแปลงที่ทำต่อตัวแปรแบบฉบับ
view:
ตัวอย่าง
สร้าง view และเปลี่ยนแปลงตัวแปรแบบฉบับ แล้วแสดงทั้งสองตัวแปร:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) x = arr.view() arr[0] = 61 print(arr) print(x)
view ควรได้รับผลกระทบจากการเปลี่ยนแปลงที่ทำต่อตัวแปรแบบฉบับ
เปลี่ยนแปลงใน view:
ตัวอย่าง
สร้าง view และเปลี่ยนแปลง view แล้วแสดงทั้งสองตัวแปร:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) x = arr.view() x[0] = 31 print(arr) print(x)
ตัวแปรแบบฉบับควรได้รับผลกระทบจากการเปลี่ยนแปลงที่ทำต่อ view
ตรวจสอบว่าตัวแปรมีข้อมูลหรือไม่
เช่นเดียวกับที่กล่าวข้างต้น คัดลอกมีข้อมูล และ view ไม่มีข้อมูล แต่เราจะเช็คอย่างไร?
ตัวแปร NumPy มี attribute base
ถ้าตัวแปรมีข้อมูล จะมีการกลับค่าของ attribute base None
.
ถ้าไม่base
attribute จะอ้างอิงตัวเดิม
ตัวอย่าง
พิมพ์ค่าของ属性 base ในการตรวจสอบว่าตัวแปร NumPy มีข้อมูลของตัวเองหรือไม่:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) x = arr.copy() y = arr.view() print(x.base) print(y.base)
สำเนาที่กลับมา None
.
ดูค่าเดิม
- หน้าก่อนหน้า NumPy ประเภทข้อมูล
- หน้าต่อไป NumPy รูปแบบแบบตัวแปร