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

2 投票
2 回答
4643 浏览
提问于 2025-04-17 11:08
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]

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

3

我不太懂numpy,所以可能还有其他解决办法,但下面这个方法应该可以用:

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

不过,这样做会让W的长度减少,减少的数量是因为条件x != 0被过滤掉的元素个数。

撰写回答