我想用numpy生成N个固定长度为n的随机数的数组,但数组的数字必须在不同的范围之间变化。
因此,例如,我想生成N = 100个大小为n = 5的数组,每个数组的数字必须介于:
依旧......
我想到的第一个想法就是:
first=np.random.randint(0,11, 100)
second=np.random.randint(20,101, 100)
...
然后我应该嵌套它们,有更有效的方法吗?
答案 0 :(得分:0)
我只是将它们放在另一个数组中并通过它们的索引迭代它们
from np.random import randint
array_holder = [[] for i in range(N)] # Get N arrays in a holder
ab_holder = [[a1, b1], [a2, b2]]
for i in range(len(array_holder)): # You iterate over each array
[a, b] = [ab_holder[i][0], ab_holder[i][1]]
for j in range(size): # Size is the ammount of elements you want in each array
array_holder[i].append(randint(a, b)) # Where a is your base and b ends the range
答案 1 :(得分:0)
另一种可能性。设置ranges
表示每个数组的各个部分的范围必须是多少以及有多少。 size
是要在数组的每个单独部分中采样的值的数量。 N
是蒙特卡罗样本的大小。结果是arrays
。
import numpy as np
ranges = [ (0, 10), (20, 100) ]
size = 5
N = 100
arrays = [ ]
for n in range(N):
one_array = []
for r in ranges:
chunk = np.random.randint(*r, size=size)
one_array.append(chunk)
arrays.append(one_array)
使用numpy的append
代替Python可能会产生明显的不同,但我已经用这种方式编写了这篇文章,以便更容易阅读(和写作) :))