a=g.vs(Name_eq="A")
b=g.vs(Name_eq="B")
Tôi muốn thêm cạnh giữa a và b, làm thế nào để tôi tiếp tục?Làm cách nào để tìm id đỉnh nếu chúng ta có đối tượng đỉnh trong python Igraph v1.7?
a=g.vs(Name_eq="A")
b=g.vs(Name_eq="B")
Tôi muốn thêm cạnh giữa a và b, làm thế nào để tôi tiếp tục?Làm cách nào để tìm id đỉnh nếu chúng ta có đối tượng đỉnh trong python Igraph v1.7?
Bạn có thể tìm thấy id đỉnh bằng cách truy cập một đỉnh cụ thể của vertexSeq là 'a' là một đối tượng chuỗi đỉnh.
Một cái gì đó như thế này, nên làm các trick.
a[0].index
OK, có vẻ như chúng tôi có hai câu hỏi ở đây. Một là trong tiêu đề câu hỏi: "làm cách nào để tìm ID đỉnh nếu chúng ta có đối tượng Vertex"? Đây là chính xác answered by Siddharth: bạn chỉ có thể sử dụng thuộc tính index
của đỉnh. Câu hỏi còn lại nằm trong phần câu hỏi: "Tôi muốn thêm một cạnh giữa a và b, làm thế nào để tôi đi về?". Câu trả lời đơn giản là sử dụng phương pháp add_edge
mà chấp nhận đối tượng Vertex cũng như ID đỉnh:
g.add_edge(a, b)
Ở đây tôi cho rằng a
và b
là đối tượng thuộc loại Vertex
. Tuy nhiên, đánh giá từ đoạn mã của bạn, những gì bạn về cơ bản muốn làm là thêm một cạnh giữa hai đỉnh mà bạn biết tên. Điều này cũng có thể được thực hiện bằng cách sử dụng phương thức find
của các đối tượng VertexSeq
, hoạt động giống như lựa chọn bạn thực hiện nhưng chỉ trả lại đầu tiên phù hợp với đỉnh phù hợp. Vì vậy, bạn chỉ có thể làm:
g.add_edge(g.vs.find(Name="A"), g.vs.find(Name="B"))
Thậm chí tốt hơn, nếu bạn sử dụng thuộc tính name
đỉnh để lưu trữ các tên đỉnh (và không Name
- lưu ý các chữ cái viết hoa), bạn thậm chí có thể sử dụng tên riêng của mình mà không cần gọi g.vs.find
vì igraph xử lý thuộc tính đỉnh name
đặc biệt:
g.add_edge("A", "B")
Tôi chỉ thử nó vì một chuỗi là tôi phải sử dụng [0] thay vì a, tức là add_edge (a [0], b [0]), Cảm ơn! – Nikhil
Ah, phải, xem các cập nhật của tôi. –
Tiêu đề câu hỏi là sai; python-igraph không có phiên bản 1.7. –