как исключить некоторые числа из списка - PullRequest
2 голосов
/ 26 января 2012
import networkx as nx
import numpy as np
import random
from networkx.utils import powerlaw_sequence


W=powerlaw_sequence(100,exponent=2.5)

random.choice(W)

Что если я хочу, чтобы числа в этой последовательности были любыми, кроме нуля?или любое число в определенном диапазоне?так что наименьшее значение равно 1, например.Или даже назначить это условие при выборе случайного числа из последовательности.

Ни powerlaw_sequence (100, экспонента = 2.0, диапазон (1,20)), ни powerlaw_sequence (100, экспонента = 2.0, xmin = 1)Работа.Спасибо

Ответы [ 2 ]

3 голосов
/ 26 января 2012

Я не знаю numpy, так что, возможно, есть другое возможное решение, но должно работать следующее:

W = [x for x in powerlaw_sequence(100,exponent=2.5) if x != 0]

Однако это уменьшает длину W на количество отфильтрованных элементов из-за условия x != 0.

1 голос
/ 26 января 2012

Может быть, вы ищете последовательность Zipf?

In [1]: import networkx as nx

In [2]: nx.utils.zipf_sequence(10,alpha=2.5)
Out[2]: [1, 1, 1, 2, 1, 2, 1, 1, 1, 8]

http://networkx.lanl.gov/reference/generated/networkx.utils.random_sequence.zipf_sequence.html#networkx.utils.random_sequence.zipf_sequence

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...