กรองกราฟตามเวลาบน edge
ในแบบฝึกหัดนี้จะได้ฝึกกรองกราฟโดยใช้เงื่อนไขที่นำไปใช้กับ edge ซึ่งจะช่วยให้คุ้นเคยกับการเขียน list comprehension ที่มีเงื่อนไขมากขึ้น
เพื่อความสะดวก ขอให้จำไว้ว่าสามารถ import ออบเจกต์ datetime จากโมดูล datetime ได้ และใน metadata ของกราฟจะมี key ชื่อ date ที่จับคู่กับออบเจกต์ datetime เป็นค่า
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์เครือข่ายระดับกลางใน Python
คำแนะนำการฝึกหัด
- สร้างกราฟใหม่ชื่อ
G_sub - เพิ่มโหนดจากกราฟต้นฉบับ (รวมถึง metadata ของโหนด) โดยใช้เมธอด
.add_nodes_from() - เพิ่ม edge โดยใช้ list comprehension ที่มีเงื่อนไขบนวันที่ของ edge ว่าวันที่ของ edge ต้องเก่ากว่า 2004-05-16 โดยทำดังนี้:
- ใช้เมธอด
.add_edges_from()โดยส่ง list comprehension เป็นอาร์กิวเมนต์ - output expression ของ list comprehension คือ
(u, v, d)ให้วนซ้ำ edge ทั้งหมดในGและตรวจสอบว่าd['date']น้อยกว่าdatetime(2004, 5, 16)หรือไม่
- ใช้เมธอด
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
import networkx as nx
from datetime import datetime
# Instantiate a new graph: G_sub
G_sub = ____
# Add nodes from the original graph
____
# Add edges using a list comprehension with one conditional on the edge dates, that the date of the edge is earlier than 2004-05-16.
G_sub.____([(____, ____, ____) for u, v, d in G.edges(data=True) if d['____'] < ____(____,____,____)])