为了找到最常见的,我知道我可以使用这样的东西:
most_common = collections.Counter(array).most_common(to_find)
Run Code Online (Sandbox Code Playgroud)
然而,我似乎无法找到任何可比的,因为找到最不常见的元素.
我可以获得有关如何做的建议.
我有scipy和numpy,Python v3.1
我需要创建一个长度为3百万的一维数组,使用100到60,000之间的随机数.它必须符合正态分布.
使用'a = numpy.random.standard_normal(3000000)',我获得了所需长度的正态分布; 不确定如何达到要求的范围.
输入列表可以超过100万个数字.当我使用较小的'重复'运行以下代码时,它很好;
def sample(x):
length = 1000000
new_array = random.sample((list(x)),length)
return (new_array)
def repeat_sample(x):
i = 0
repeats = 100
list_of_samples = []
for i in range(repeats):
list_of_samples.append(sample(x))
return(list_of_samples)
repeat_sample(large_array)
Run Code Online (Sandbox Code Playgroud)
然而,使用诸如上述100的高重复,导致MemoryError.回溯如下;
Traceback (most recent call last):
File "C:\Python31\rnd.py", line 221, in <module>
STORED_REPEAT_SAMPLE = repeat_sample(STORED_ARRAY)
File "C:\Python31\rnd.py", line 129, in repeat_sample
list_of_samples.append(sample(x))
File "C:\Python31\rnd.py", line 121, in sample
new_array = random.sample((list(x)),length)
File "C:\Python31\lib\random.py", line 309, in sample
result = [None] * k
MemoryError
Run Code Online (Sandbox Code Playgroud)
我假设我的内存不足.我不知道如何解决这个问题.
感谢您的时间!