如何从列表中排除某些数字
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 个回答
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]
3
我不太懂numpy,所以可能还有其他解决办法,但下面这个方法应该可以用:
W = [x for x in powerlaw_sequence(100,exponent=2.5) if x != 0]
不过,这样做会让W
的长度减少,减少的数量是因为条件x != 0
被过滤掉的元素个数。