我构造了一个权重对象:
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中的WAR权重对象具有一个邻居属性,如下所示:
w.neighbors它将返回一个dict:{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}的内容。而不是像这样绕着狗屎圈:
n_nbrs = dict()
for key, value in w.neighbors.items():
n_nbrs[key] = len(value)有什么简单的方法可以做到这一点吗?
发布于 2018-12-18 14:55:39
您可以使用w.cardinalities。它将返回您正在寻找的确切内容- {0: 2, 1: 3, 2: 2, 3: 3}。
PySAL目前正在改变它的结构,所以weights模块现在是libpysal包的一部分,它的文档正在解释它,不像您所指的那样。
https://stackoverflow.com/questions/53655561
复制相似问题