0

我构造了一个权重对象:

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的邻居属性如下:

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)

有没有简单的方法来实现这一点?

4

1 回答 1

0

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

PySAL 当前正在更改其结构,因此该weights模块现在是libpysal包的一部分,并且它的文档正在对其进行解释,这与您所指的不同。

于 2018-12-18T14:55:39.900 回答