如何使用NumPy生成含负数的指定区间随机数组并解决randint报错
报错原因及解决
np.random.randint的参数逻辑为:
- 仅传入1个位置参数时,该值为上限high,默认下限low=0,返回[0, high)区间的整数
- 传入2个位置参数时,第一个为下限low,第二个为上限high,返回[low, high)区间的整数
你此前生成的random_num范围为1020的正数,默认low=0小于high,运行正常;当`random_num`的范围调整为-1020后,可能随机得到负数,此时默认low=0大于作为high的负数,就会触发low >= high报错。
解决方法:明确传入上下限两个参数即可,示例如下(如果你的需求是生成区间为[-10, random_num)的4行2列整数数组):
import numpy as np random_num = np.random.randint(-10,20) arr_rand = np.random.randint(low=-10, high=random_num, size=(4,2))
如果你的需求是下限为随机的random_num,上限固定为20,调整参数顺序即可:
arr_rand = np.random.randint(low=random_num, high=20, size=(4,2))
生成指定范围的浮点随机数
首先补充说明:np.random.randn生成的是符合标准正态分布的样本,不是01的均匀分布值,01均匀分布的浮点值可以用np.random.rand生成。
不同分布的浮点随机数生成方案如下:
- 均匀分布浮点值:直接调用
np.random.uniform,指定上下限和输出尺寸即可,示例为生成[-10, 20)范围的4行2列浮点数组:
float_arr = np.random.uniform(low=-10, high=20, size=(4,2))
也可以通过基础rand方法缩放得到:
low = -10 high = 20 float_arr = np.random.rand(4,2) * (high - low) + low
- 正态分布浮点值:调用
np.random.normal,指定均值、标准差和输出尺寸即可,示例为均值为5、标准差为3的4行2列浮点数组:
float_arr = np.random.normal(loc=5, scale=3, size=(4,2))
内容的提问来源于stack exchange,提问作者tylerdjt
相关产品推荐
相关产品推荐

