GraphView边过滤和顶点过滤后的原始Graph一样
GraphView edge filter is same as original Graph after vertex filtering
我有一个 Graph
和一个关联的边 属性。然后,我使用带有 GraphView
.
的顶点过滤器过滤图形
g = Graph(directed=False)
g.add_vertex(6)
g.add_edge_list([(0, 1), (1, 2), (1, 4), (2, 4), (3, 5), (4, 5)])
eprop = g.new_edge_property('int')
eprop.a = numpy.random.randint(0, 10, g.num_edges())
vfilt = g.new_vertex_property('bool')
vfilt.a[[0, 1, 2, 4]] = True
h = GraphView(g, vfilt=vfilt)
在这个例子中,原始图有预期的 6 个顶点和 6 个边。
<Graph object, undirected, with 6 vertices and 6 edges at 0x1f9149550>
视图有 4 个顶点和 4 条边。
<GraphView object, undirected, with 4 vertices and 4 edges, edges filtered by (<PropertyMap object with key type 'Edge' and value type 'bool', for Graph 0x209b4f7f0, at 0x182ea70f0>, False), vertices filtered by (<PropertyMap object with key type 'Vertex' and value type 'bool', for Graph 0x209b4f7f0, at 0x14a00a710>, False) at 0x209b4f7f0>
我的最终objective是为h
中存在的边获取eprop
的值。一种简单快捷的方法是在 eprop.a
上使用布尔数组索引。我以为我可以为此使用视图的边缘过滤器,但它的行为并不像我预期的那样。
h.get_edge_filter()
returns一个PropertyMap
(<PropertyMap object with key type 'Edge' and value type 'bool', for Graph 0x209b4f7f0, at 0x182ea70f0>,
False)
但h.get_edge_filter()[0].a
显示所有值都是True
PropertyArray([1, 1, 1, 1, 1, 1], dtype=uint8)
我是不是做错了什么,或者我期望的行为是我不应该做的?
是否有更快的方法来获取一组顶点之间所有边的边 属性 值?
筛选后的图表会出现这种行为。 .a
属性总是 returns 底层数组,它还包含未过滤的值。要仅访问过滤后的值,您应该改用 .fa
属性。
此处的文档对此进行了解释:https://graph-tool.skewed.de/static/doc/graph_tool.html#graph_tool.PropertyMap.fa
我有一个 Graph
和一个关联的边 属性。然后,我使用带有 GraphView
.
g = Graph(directed=False)
g.add_vertex(6)
g.add_edge_list([(0, 1), (1, 2), (1, 4), (2, 4), (3, 5), (4, 5)])
eprop = g.new_edge_property('int')
eprop.a = numpy.random.randint(0, 10, g.num_edges())
vfilt = g.new_vertex_property('bool')
vfilt.a[[0, 1, 2, 4]] = True
h = GraphView(g, vfilt=vfilt)
在这个例子中,原始图有预期的 6 个顶点和 6 个边。
<Graph object, undirected, with 6 vertices and 6 edges at 0x1f9149550>
视图有 4 个顶点和 4 条边。
<GraphView object, undirected, with 4 vertices and 4 edges, edges filtered by (<PropertyMap object with key type 'Edge' and value type 'bool', for Graph 0x209b4f7f0, at 0x182ea70f0>, False), vertices filtered by (<PropertyMap object with key type 'Vertex' and value type 'bool', for Graph 0x209b4f7f0, at 0x14a00a710>, False) at 0x209b4f7f0>
我的最终objective是为h
中存在的边获取eprop
的值。一种简单快捷的方法是在 eprop.a
上使用布尔数组索引。我以为我可以为此使用视图的边缘过滤器,但它的行为并不像我预期的那样。
h.get_edge_filter()
returns一个PropertyMap
(<PropertyMap object with key type 'Edge' and value type 'bool', for Graph 0x209b4f7f0, at 0x182ea70f0>,
False)
但h.get_edge_filter()[0].a
显示所有值都是True
PropertyArray([1, 1, 1, 1, 1, 1], dtype=uint8)
我是不是做错了什么,或者我期望的行为是我不应该做的?
是否有更快的方法来获取一组顶点之间所有边的边 属性 值?
筛选后的图表会出现这种行为。 .a
属性总是 returns 底层数组,它还包含未过滤的值。要仅访问过滤后的值,您应该改用 .fa
属性。
此处的文档对此进行了解释:https://graph-tool.skewed.de/static/doc/graph_tool.html#graph_tool.PropertyMap.fa