如何从列表中排除某些数字

时间:2012-01-26 10:15:25

标签: python numpy networkx

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,exponent = 2.0,range(1,20))和powerlaw_sequence(100,exponent = 2.0,xmin = 1)都不起作用。谢谢

2 个答案:

答案 0 :(得分:3)

我不知道numpy,所以也许有另一种可能的解决方案,但以下应该有效:

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

但是,这会将W的长度减少因条件x != 0而滤除的元素数量。

答案 1 :(得分:1)

也许您正在寻找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