Warning

This documents an unmaintained version of NetworkX. Please upgrade to a maintained version and see the current NetworkX documentation.

# average_neighbor_degree¶

average_neighbor_degree(G, source='out', target='out', nodes=None, weight=None)

Returns the average degree of the neighborhood of each node.

The average degree of a node $$i$$ is

$k_{nn,i} = \frac{1}{|N(i)|} \sum_{j \in N(i)} k_j$

where $$N(i)$$ are the neighbors of node $$i$$ and $$k_j$$ is the degree of node $$j$$ which belongs to $$N(i)$$. For weighted graphs, an analogous measure can be defined [R147],

$k_{nn,i}^{w} = \frac{1}{s_i} \sum_{j \in N(i)} w_{ij} k_j$

where $$s_i$$ is the weighted degree of node $$i$$, $$w_{ij}$$ is the weight of the edge that links $$i$$ and $$j$$ and $$N(i)$$ are the neighbors of node $$i$$.

Parameters : G : NetworkX graph source : string (“in”|”out”) Directed graphs only. Use “in”- or “out”-degree for source node. target : string (“in”|”out”) Directed graphs only. Use “in”- or “out”-degree for target node. nodes : list or iterable, optional Compute neighbor degree for specified nodes. The default is all nodes in the graph. weight : string or None, optional (default=None) The edge attribute that holds the numerical value used as a weight. If None, then each edge has weight 1. d: dict A dictionary keyed by node with average neighbors degree value.

Notes

For directed graphs you can also specify in-degree or out-degree by passing keyword arguments.

References

 [R147] (1, 2) A. Barrat, M. Barthélemy, R. Pastor-Satorras, and A. Vespignani, “The architecture of complex weighted networks”. PNAS 101 (11): 3747–3752 (2004).

Examples

>>> G=nx.path_graph(4)
>>> G.edge['weight'] = 5
>>> G.edge['weight'] = 3

>>> nx.average_neighbor_degree(G)
{0: 2.0, 1: 1.5, 2: 1.5, 3: 2.0}
>>> nx.average_neighbor_degree(G, weight='weight')
{0: 2.0, 1: 1.1666666666666667, 2: 1.25, 3: 2.0}

>>> G=nx.DiGraph()

>>> nx.average_neighbor_degree(G, source='out', target='out')