我构造了一个权重对象:
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)
有没有简单的方法可以实现这一目标?
答案 0 :(得分:0)
您可以使用w.cardinalities
。它将完全返回您要查找的内容-{0: 2, 1: 3, 2: 2, 3: 3}
。
PySAL当前正在更改其结构,因此weights
模块现在是libpysal
程序包的一部分,其documentation在解释它,与您所引用的不同。