教程 | Numpy的伪随机数生成

 

访问flyai.club,一键创建你的人工智能项目

 

        

        numpy.random模块对Python内置的random进行了补充,增加了一些用于高效生成多种概率分布的样本值的函数。例如,你可以用normal来得到一个标准正态分布的4×4样本数组:

 

 

        而Python内置的random模块则只能一次生成一个样本值。从下面的测试结果中可以看出,如果需要产生大量样本值,numpy.random快了不止一个数量级

 

 

        我们说这些都是伪随机数,是因为它们都是通过算法基于随机数生成器种子,在确定性的条件下生成的。你可以用NumPy的np.random.seed更改随机数生成种子:

 

 

        numpy.random的数据生成函数使用了全局的随机种子。要避免全局状态,你可以使用numpy.random.RandomState,创建一个与其它隔离的随机数生成器:

 

 

        numpy.random函数

 

        

 

教程 | Jupyter Notebook初级教程——迷死人的基础操作​

教程 | Jupyter Notebook基础教程——快捷键的使用​

教程 | Python之Numpy ndarray 基本介绍 1​

教程 | Python之Numpy ndarray 基本介绍 2​

教程 | Python之Numpy ndarray 基本介绍 3​

教程 | Python之Numpy ndarray 基本介绍 4​

教程 | 通用函数:快速的元素级数组函数​

教程 | 使用数组进行数组编程(上)

教程 | 使用数组进行数组编程(下)​

教程 | Numpy的线性代数运算

点击 阅读原文 ,动手操作

 

—  End —

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Python代码示例,用于生成随机数DFT水印: ```python import numpy as np import cv2 # 加载图像 img = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE) height, width = img.shape # 生成随机数矩阵 np.random.seed(0) rand_matrix = np.random.rand(height, width) # 将随机数矩阵转换为二进制 binary_rand_matrix = np.zeros((height, width), dtype=np.uint8) for i in range(height): for j in range(width): if rand_matrix[i, j] > 0.5: binary_rand_matrix[i, j] = 1 # 进行DFT变换 dft_matrix = cv2.dft(np.float32(binary_rand_matrix), flags=cv2.DFT_COMPLEX_OUTPUT) # 将水印嵌入到频域图像中 watermark = cv2.imread('watermark.png', cv2.IMREAD_GRAYSCALE) watermark = cv2.resize(watermark, (width, height)) watermark = np.float32(watermark) for i in range(height): for j in range(width): dft_matrix[i, j] = dft_matrix[i, j] * (1 + watermark[i, j] / 255) # 进行IDFT变换 idft_matrix = cv2.idft(dft_matrix, flags=cv2.DFT_SCALE) # 提取水印 extracted_watermark = np.zeros((height, width), dtype=np.uint8) for i in range(height): for j in range(width): extracted_watermark[i, j] = np.round(abs(idft_matrix[i, j])).astype(np.uint8) # 显示图像和水印 cv2.imshow('Original Image', img) cv2.imshow('Watermark', watermark) cv2.imshow('Extracted Watermark', extracted_watermark) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这个示例中,我们首先加载了一张灰度图像,然后生成了一个随机数矩阵。接下来,我们将随机数矩阵转换为二进制形式,并对其进行DFT变换。然后,我们将一个水印嵌入到频域图像中。在进行IDFT变换之后,我们可以提取出水印并将其显示出来。 请注意,这只是一个简单的示例,真实的水印算法可能需要更复杂的处理步骤,以提高水印的鲁棒性和安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值