numpy知识库:np.random.randint()用法及其使用场景举例
【代码】numpy知识库:np.random.randint()用法及其使用场景举例。
文章共2,288字 · 阅读需要大约8分钟
一键AI生成摘要,助你高效阅读
问答
·
文章目录
Numpy中文文档
引言
欢迎来到这篇关于numpy库中np.random.randint()函数的博客。numpy是Python的一个重要的科学计算库,而np.random.randint()则是numpy.random模块中的一个非常实用的函数,用于生成随机整数。
np.random.randint()基本用法
np.random.randint()
函数用于生成随机整数,其基本语法如下:
numpy.random.randint(low, high=None, size=None, dtype='l')
参数说明:
参数 | 说明 |
---|---|
low | 生成的整数最低值(包含),即所有生成的整数都会大于等于这个值。 |
high | 生成的整数最高值(不包含),即所有生成的整数都会小于这个值。 |
size | 输出的形状,可以为整数(生成元素的数量)或者元组(各维度的大小)。如果不提供,则返回一个单一随机整数。 |
dtype | 数据类型,可选参数,默认为’l’,表示生成的数据类型为整数。 |
np.random.randint()基本使用方法
示例代码
import numpy as np
# 【随机】返回[0,5)范围内的一个整数
# [0, 5) --> 左闭右开区间
int_a = np.random.randint(5) # int_a 可能为 0、1、2、3、4
int_a = np.random.randint(low=5) # int_a 可能为 0、1、2、3、4
# 【随机】返回[1,5)范围内的一个整数
int_a = np.random.randint(1, 5) # int_a 可能为 1、2、3、4
int_a = np.random.randint(low=1, high=5) # int_a 可能为 1、2、3、4
# 【随机】返回[1,5)范围内的,且形状为3行2列的整数数组
array_a = np.random.randint(1, 5, (3,2))
array_a = np.random.randint(low=1, high=5, size=(3,2))
# [[3 4]
# [1 4]
# [1 2]]
# 【随机】返回[1,5)范围内的,且形状为3行2列的整数数组,且数组每个元素的数据类型都是无符号8位整数
array_a = np.random.randint(1, 5, (3,2), np.uint8)
array_a = np.random.randint(low=1, high=5, size=(3,2), dtype=np.uint8)
print(array_a.dtype) # uint8
np.random.randint()的应用场景举例
1. 模拟随机试验
在模拟随机试验时,我们经常需要用到随机数。比如,我们可以使用np.random.randint()
来模拟投掷骰子的结果:
import numpy as np
# 模拟投掷骰子1000次,计算1-6每个数字出现的次数
dice_rolls = np.random.randint(1, 7, size=1000)
counts = np.bincount(dice_rolls) # 使用np.bincount统计每个数字出现的次数
print(counts) # 输出1-6每个数字出现的次数,因为投掷了1000次,所以理论上每个数字出现的次数应该接近1000/6=167次。
2. 数据增强(Data Augmentation)
在机器学习中,特别是在处理图像数据时,数据增强是一种常用的技术,它可以通过对现有数据进行微小的随机变化来生成新的数据,从而增加训练数据集的大小。np.random.randint()
可以用来生成随机的变换参数。例如,我们可以使用它来随机裁剪图像:
import numpy as np
from PIL import Image
# 加载图像
image = Image.open('path_to_image.jpg')
width, height = image.size
# 随机裁剪参数,裁剪出一个宽和高都在[crop_min, crop_max]之间的区域
crop_min = 50 # 最小裁剪大小
crop_max = min(width, height) - crop_min # 最大裁剪大小,保证裁剪后的图像大小至少为crop_min x crop_min
left = np.random.randint(0, crop_max - crop_min + 1) # 左边界位置
top = np.random.randint(0, crop_max - crop_min + 1) # 上边界位置
right = left + crop_min # 右边界位置
bottom = top + crop_min # 下边界位置
cropped_image = image.crop((left, top, right, bottom)) # 裁剪图像
cropped_image.show() # 显示裁剪后的图像
代码实战举例
需求:
生成一个随机噪声灰度图像,像素值是范围[0, 256)内的整数,图像形状为(512, 512),并显示图像
完整代码
import numpy as np
import cv2
img = np.random.randint(0, 256, size=[512, 512], dtype=np.uint8)
cv2.imshow("noise img", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果
结束语
- 亲爱的读者,感谢您花时间阅读我们的博客。我们非常重视您的反馈和意见,因此在这里鼓励您对我们的博客进行评论。
- 您的建议和看法对我们来说非常重要,这有助于我们更好地了解您的需求,并提供更高质量的内容和服务。
- 无论您是喜欢我们的博客还是对其有任何疑问或建议,我们都非常期待您的留言。让我们一起互动,共同进步!谢谢您的支持和参与!
- 我会坚持不懈地创作,并持续优化博文质量,为您提供更好的阅读体验。
- 谢谢您的阅读!
更多推荐
已为社区贡献8条内容
所有评论(0)