s = g.neighbor_sampler("buy", expand_factor=0, strategy="full")
l = s.get(ids) # input ids: shape=(4)
# res['a'] # Nodes of [1, 2, 3, 4]
# res['b'] # SparseEdges
nodes = l.layer_nodes(1)
edges = l.layer_edges(1)
nodes.ids
# array([3, 0, 2, 1, 1, 2])
edges.src_ids
# array([1, 1, 1, 2, 4, 4])
edges.dst_ids
# array([3, 0, 2, 1, 1, 2])
nodes.offsets
# [3, 1, 0, 2]
# 即user1有3个邻居,user2有1个邻居,user3有0个邻居,user4有2个邻居
edges.offsets
# [3, 1, 0, 2]
nodes.dense_shape
# [4, 3]
# 即[seed顶点数,seed顶点中邻居数的最大值]
edges.dense_shape
# [4, 3]
nodes.indices
# [[0, 1], [0, 2], [0, 3], [1, 0], [3, 1], [3, 2]]
# 即src_ids对应在dense Nodes中的对应下标(同dst_ids对应在dense Nodes中的下标)
# 对应的dst dense Nodes:
# [[ 3, 0, 2],
# [ 1, -1, -1],
# [-1, -1, -1],
# [ 1, 2, -1]]
edges.indices
# [[0, 1], [0, 2], [0, 3], [1, 0], [3, 1], [3, 2]]
edges.weights
# [0.2, 0.1, 0.0, 0.1, 0.5, 0.3]
# 遍历每个输入顶点ids的全部邻居边。
iterate = 0
for e in edges:
print("Iterate {}:".format(iterate), e.dst_ids, e.weights)
iterate += 1
# Iterate 0: [3, 0, 2], [0.2, 0.1, 0.0]
# Iterate 1: [1], [0.1],
# Iterate 2: [], []
# Iterate 3: [1, 2], [0.5, 0.3]
# 遍历每个输入顶点ids的全部邻居顶点。
iterate = 0
for n in nodes:
print("Iterate {}:".format(iterate), n.ids)
iterate += 1
# Iterate 0: [3, 0, 2]
# Iterate 1: [1]
# Iterate 2: []
# Iterate 3: [1, 2]