通过使用pysal的weights对象返回邻居的总数

时间:2018-12-06 16:18:43

标签: pysal

我构造了一个权重对象:

import pysal as ps
neighbors = {0: [3, 1], 1: [0, 2, 2], 2: [1, 2], 3: [0, 1, 1]}
weights = {0: [1, 1], 1: [1, 1, 1], 2: [1, 1], 3: [1, 1, 1]}
w = ps.W(neighbors, weights)

pysal中的Weights对象具有近邻属性,如下所示:

w.neighbors

它将返回一个字典:{0: [3, 1], 1: [0, 2, 2], 2: [1, 2], 3: [0, 1, 1]}

我检查了pysal的api,并找到了许多方法和属性来返回有关邻居数量而不是所有邻居总数的信息。

对于上述w,我希望它返回类似{0: 2, 1: 3, 2: 2, 3: 3}的内容。而不是像这样遍历dict:

n_nbrs = dict()
for key, value in w.neighbors.items():
    n_nbrs[key] = len(value)

有没有简单的方法可以实现这一目标?

1 个答案:

答案 0 :(得分:0)

您可以使用w.cardinalities。它将完全返回您要查找的内容-{0: 2, 1: 3, 2: 2, 3: 3}

PySAL当前正在更改其结构,因此weights模块现在是libpysal程序包的一部分,其documentation在解释它,与您所引用的不同。