Numpy中 random.rand() 和random.normal() 的用法

本文介绍了Numpy库中random.rand()和random.normal()的使用方法。random.rand()生成0到1之间的随机数,可指定输出维度;random.normal()则用于生成符合正态分布的数据,包括均值、标准差和输出形状的设置。

random.rand的用法
#直接举例
random.rand(‘参数’)的功能主要是产生0-1之间的随机数,括号内的参数可以指定输出结果的维度

import numpy as np
pre_embedding = np.random.rand(3)   #产生三个0-1之间的随机数
pre_embedding_1 = np.random.rand(3,3)  #生成一个二维数组
pre_embedding_2 = np.random.rand(3,3,3) #生成一个三维数组
print(pre_embedding)
print('***************************************')
print(pre_embedding_1)
print('***************************************')
print(pre_embedding_2)

输出结果:

[0.79361659 0.54862139 0.53871834]
***************************************
[[0.39056948 0.2079128  0.49439483]
 [0.80964947 0.38093295 0.29418133]
 [0.42483178 0.9474542  0.30737835]]
***************************************
[[[0.05451471 0.30638544 0.90205104]
  [0.83569155 0.86030104 0.43600045]
  [0.80787798 0.34127962 0.67618464]]

 [[0.42327551 0.25691566 0.99237186]
  [0.90936001 0.97076353 0.05800197]
  [0.34290858 0.81758333 0.89198008]]

 [[0.27974274 0.82173925 0.75286244]
  [0.87690549 0.58582206 0.44959526]
  [0.97130889 0.87764664 0.52238763]]]

random.normal 用法

Numpy中numpy.random.normal(loc, scale, size) 用于随机生成一组指定维度/shape的正态分布的数据。

参数含义:

loc:float
概率分布的均值,对应着整个分布的中心;
scale:float
概率分布的标准差,对应于分布的宽度,scale值越大表示正态分布曲线越宽,越矮,scale值越小表示正态分布曲线越窄,越高
size:int or tuple of ints
输出的shape,默认为None,只输出一个值

举例

import numpy as np
x_data = np.linspace(-1,1,3)[:,np.newaxis]	#--->维度
print(x_data)
noise = np.random.normal(0,0.05,x_data.shape)	
print(noise)
y_data = np.square(x_data) - 0.5 + noise	
print(y_data)

输出

[[-1.]
 [ 0.]
 [ 1.]]
[[-0.03699895]
 [-0.02344254]
 [ 0.01614915]]
[[ 0.46300105]
 [-0.52344254]
 [ 0.51614915]]

如结果所示,x_data的shape为3×1,即为noise的shape

<think>首先,用户的问题是:“我想了解numpy库中random模块的rand函数使用numpy.random.rand(100,2)语句时的具体含义 请问解释numpy.random.rand(100,2)的含义” 用户引用了几个站内引用,这些引用描述了numpy.random.rand()numpy.random.randn()其他函数。关键引用是: - 引用[1]:numpy.random.rand() 均匀分布范围 [0, 1),不包括1。 - 引用[2]:numpy.random.rand(d0,d1,…,dn) 返回一个或一组服从“0~1”均匀分布的随机样本值。随机样本取值范围是[0,1),不包括1。 - 引用[3]:类似地,numpy.random.rand() 的随机样本位于[0, 1)中。 - 引用[5]:提到了numpy.random.randint(),但用户的问题是关于rand的,所以主要看前面的。 用户的问题具体是关于numpy.random.rand(100,2)的含义。 根据系统级指令: - 所有行内数学表达式必须使用$...$格式。例如,变量如$d0, d1$。 - 独立公式必须使用$$...$$格式并单独成段(如果有数学公式)。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,如[^1]。 - 结构清晰,逐步解决问题。 我的回答需要解释numpy.random.rand(100,2)的含义。 关键点: - numpy.random.rand()生成均匀分布的随机数在[0, 1)区间。 - 参数指定输出的形状。这里,(100,2)表示生成一个100行2列的数组。 所以,numpy.random.rand(100,2)创建一个二维数组,大小为100×2,其中每个元素都是从[0,1)均匀分布的独立随机数。 现在,构建回答结构: 1. **引言**:简要解释rand函数的作用。 2. **具体含义**:详细描述numpy.random.rand(100,2)。 3. **示例**:提供一个简单的代码示例来展示输出(如果需要)。 4. **相关概念**:简要对比其他函数如randn或normal,基于引用。 5. **相关问题**:生成几个相关问题。 引用标识:在解释中提到引用时,例如[^2]。 最终,生成相关问题。 回答大纲: - **步骤1:介绍rand函数** - numpy.random.rand()用于生成均匀分布的随机数在[0,1)区间内[^1][^2]。 - **步骤2:解释参数含义** - 参数指定数组的形状。例如,rand(d0,d1,...,dn)创建一个dn维数组。 - 具体到rand(100,2):它生成一个二维数组,有100行2列。 - **步骤3:描述输出** - 每个元素是从[0,1)均匀分布的独立随机数。 - 可以用数学表示:每个元素 $x_{ij} \sim \text{Uniform}(0,1)$。 - **步骤4:示例代码** - 提供一个简单的python代码示例。 - **步骤5:与其他函数对比** - 简要提到rand vs randn vs normal,基于引用[4]。 - **步骤6:生成相关问题** - 例如:1. numpy.random.rand()numpy.random.randn()有什么区别?2. 如何生成不同范围的均匀分布随机数? 确保语言清晰,使用中文。 </think>### numpy.random.rand(100,2) 的解释 在 NumPy 库中,`numpy.random.rand()` 函数用于生成服从均匀分布的随机数。具体到 `numpy.random.rand(100,2)`,它的含义可以通过以下步骤逐步解释: 1. **函数基本作用**: - `numpy.random.rand()` 生成一个或多个服从均匀分布的随机数,取值范围为 $[0, 1)$(即包括 0,但不包括 1)。每个生成的随机数都是独立的,且服从均匀分布 $\text{Uniform}(0,1)$[^1][^2]。 - 数学上,均匀分布定义为其概率密度函数为常数:如果 $x \sim \text{Uniform}(0,1)$,则 $p(x) = 1$ 对于 $x \in [0,1)$。 2. **参数含义**: - `rand()` 的参数指定了输出数组的形状(shape)。参数可以是多个整数,表示数组的维度。 - 例如: - `rand(3)` 生成一个一维数组,包含 3 个元素。 - `rand(2, 3)` 生成一个二维数组(矩阵),大小为 2 行 × 3 列。 - 在 `rand(100,2)` 中: - 第一个参数 `100` 表示数组的行数。 - 第二个参数 `2` 表示数组的列数。 - 因此,它创建一个二维数组,大小为 100 行 × 2 列。 3. **具体输出**: - `rand(100,2)` 会生成一个 $100 \times 2$ 的 NumPy 数组,其中每个元素都是从 $[0,1)$ 均匀分布中独立抽取的随机数。 - 数组形式可表示为: $$ \begin{bmatrix} x_{11} & x_{12} \\ x_{21} & x_{22} \\ \vdots & \vdots \\ x_{100,1} & x_{100,2} \end{bmatrix} $$ 其中 $x_{ij} \sim \text{Uniform}(0,1)$,所有元素相互独立。 - 这种输出常用于需要大量随机样本的场景,如机器学习中的数据生成或蒙特卡洛模拟。 4. **代码示例**: 以下 Python 代码演示了 `numpy.random.rand(100,2)` 的使用输出: ```python import numpy as np # 生成一个 100×2 的随机数组 random_array = np.random.rand(100, 2) # 查看数组形状前几行 print("数组形状:", random_array.shape) # 输出: (100, 2) print("前 3 行示例:\n", random_array[:3]) # 示例输出类似: [[0.123... 0.456...], [0.789... 0.012...], [0.345... 0.678...]] ``` - 运行结果会显示一个 100 行 2 列的数组,每个元素在 $[0,1)$ 之间(如 `0.123`),且每次运行结果不同,因为它们是随机生成的。 5. **与其他函数的对比**: - **`rand()` vs `randn()`**:`rand()` 生成均匀分布 $[0,1)$ 的随机数,而 `randn()` 生成标准正态分布(均值为 0、标准差为 1)的随机数[^3][^4]。例如,`randn(100,2)` 会输出正态分布的数据。 - **`rand()` vs `normal()`**:`numpy.random.normal()` 可自定义正态分布的均值标准差,而 `rand()` 仅限于均匀分布[^4]。 - **`rand()` vs `randint()`**:`randint()` 生成离散整数(如 `randint(0, 5)` 生成 $[0,5)$ 的整数),而 `rand()` 生成连续浮点数[^5]。 总之,`numpy.random.rand(100,2)` 的含义是**生成一个 100 行 × 2 列的二维数组,其中每个元素都是从 $[0,1)$ 均匀分布中抽取的独立随机浮点数**。这常用于需要二维随机数据的应用,如数据集模拟或坐标生成[^1][^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值