如何生成一个numpy数组,使数组中的每一列都在不同的范围内均匀分布?下面的代码使用了两个for循环,速度很慢,有没有什么矩阵式的方法可以更快地生成这样的数组?谢谢。在
import numpy as np
num = 5
ranges = [[0,1],[4,5]]
a = np.zeros((num, len(ranges)))
for i in range(num):
for j in range(len(ranges)):
a[i, j] = np.random.uniform(ranges[j][0], ranges[j][1])
你可以做的是先生成区间[0,1]中的所有随机数,然后相应地缩放和移动它们:
所以基本上,您可以通过
np.random.random(size=(num, widths.shape[0]))
创建一个大小合适的数组,随机数在0和1之间。然后按与实际要采样的间隔宽度相对应的因子缩放每个值。最后,通过starts
移动它们,以说明间隔的不同起始值。在^{} 将广播其参数,因此您可以通过传递低值序列作为第一个参数,将高值序列作为第二个参数,并将
size
参数作为(num, m)
来生成所需的样本,其中m
是范围数。在例如
相关问题 更多 >
编程相关推荐