вернуть общее количество соседей с помощью объекта весов писала - PullRequest
0 голосов
/ 06 декабря 2018

Я создаю объект весов:

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]},

Я проверил api в pysal и нашел множество методов и атрибутов, которые возвращают что-то о количестве соседей, но не общее количество всех соседей.

Для вышеупомянутого w я хочу, чтобы он возвращал что-то вроде: {0: 2, 1: 3, 2: 2, 3: 3}.Вместо зацикливания на диктовке, например:

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

Есть ли какой-нибудь простой способ добиться этого?

1 Ответ

0 голосов
/ 18 декабря 2018

Вы можете использовать w.cardinalities.Он вернет именно то, что вы ищете - {0: 2, 1: 3, 2: 2, 3: 3}.

PySAL в настоящее время меняет свою структуру, поэтому модуль weights теперь является частью пакета libpysal и его документация объясняет это, в отличие от того, на который вы ссылаетесь.

...