首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >通过 numpy 生成数据的几种常用方式

通过 numpy 生成数据的几种常用方式

原创
作者头像
密码学人CipherHUB
发布2025-05-19 19:16:50
发布2025-05-19 19:16:50
18500
代码可运行
举报
文章被收录于专栏:数理视界数理视界
运行总次数:0
代码可运行

通过 numpy 生成数据的几种常用方式

NumPy作为Python科学计算的核心库,提供了丰富的数据生成方法。本文将结合实例代码,详细解析7种最常用的数据生成方式。

一、等间隔序列生成

1.1 linspace方法

np.linspace(start, stop, num)生成闭区间内指定数量的等分点:

代码语言:python
代码运行次数:0
运行
复制
# 生成[-5, 5]内的9个等分点(包含端点)
x = np.linspace(-5, 5, 9)
# 结果:[-5. -3.75 -2.5 ... 3.75 5. ]

特点:

  • 精确控制数据点数量
  • 默认包含右端点(可通过endpoint=False关闭)

1.2 arange方法

np.arange(start, stop, step)生成固定步长的序列:

代码语言:python
代码运行次数:0
运行
复制
# 生成[-5, 5)步长为1的整数序列
x = np.arange(-5, 5, 1)
# 结果:[-5 -4 -3 ... 3 4]

注意事项:

  • 右开区间设计(不包含stop值)
  • 浮点步长可能导致精度问题(建议优先使用linspace)

二、随机数生成

2.1 均匀分布

np.random.uniform(low, high, size)生成指定区间内的均匀分布随机数:

代码语言:python
代码运行次数:0
运行
复制
# 生成10个[-5,5)的随机数
x = np.random.uniform(-5, 5, 10)
# 示例值:[-4.57, -0.18, 3.08,...]

np.random.rand(d0,d1,...)生成[0,1)区间的均匀分布:

代码语言:python
代码运行次数:0
运行
复制
# 生成3x2矩阵
x = np.random.rand(3, 2)
# 示例值:[[0.297, 0.374],...]

2.2 正态分布

np.random.normal(loc, scale, size)生成指定参数的正态分布:

代码语言:python
代码运行次数:0
运行
复制
# 均值5,标准差2的10个样本
x = np.random.normal(5, 2, 10)
# 示例值:[0.78, 5.08, 4.88,...]

2.3 随机整数

np.random.randint(low, high, size)生成整型随机数:

代码语言:python
代码运行次数:0
运行
复制
# 生成10个[-5,5)的整数
x = np.random.randint(-5, 5, 10)
# 示例值:[0, 3, -2,...]

三、特殊序列生成

3.1 对数尺度序列

np.logspace(start, stop, num)生成对数等分序列:

代码语言:python
代码运行次数:0
运行
复制
# 10^(-5)到10^5生成10个点
x = np.logspace(-5, 5, 10)
# 结果:[1e-05, 1.29e-04,...1e+05]

等价于:

代码语言:python
代码运行次数:0
运行
复制
10 ** np.linspace(-5, 5, 10)

四、方法对比与选型指南

方法

输出类型

区间特性

典型应用场景

linspace

等间隔浮点数

start, stop

曲线绘制、插值计算

arange

步长序列

[start, stop)

整数序列生成、简单循环

uniform

均匀分布

[low, high)

随机模拟、参数采样

normal

正态分布

实数域

统计建模、噪声生成

logspace

对数序列

10^start到10^stop

频谱分析、指数级数实验

randint

离散整数

[low, high)

索引生成、随机选择

完整示例代码

代码语言:python
代码运行次数:0
运行
复制
from __future__ import annotations

import numpy as np

# 在区间 [start, stop] 内生成 num 个等间隔的点
# [-5.   -3.75 -2.5  -1.25  0.    1.25  2.5   3.75  5.  ]
x1 = np.linspace(-5 , 5 , 9)
print('从[-5, 5]中生成 9 个等间隔的点' , x1)

# 根据固定步长 step 生成区间 [start, stop) 内的值。
# [-5 -4 -3 -2 -1  0  1  2  3  4]
x2 = np.arange(-5 , 5 , 1)
print('根据步长生成取值点' , x2)

# 从均匀分布中采样,生成区间 [low, high) 内的随机数
"""
[-4.56820017 -0.18091668  3.08155666  2.16653036
 -0.8515069   0.96415316  0.11633998 -2.79085614
 -0.60676836  4.38393604]
"""
x3 = np.random.uniform(-5 , 5 , 10)
print('从[-5, 5)内均匀分布采样 10 个值' , x3)

# 生成 [0.0, 1.0) 内的均匀分布随机数
# 如果需要指定范围,则更建议直接使用 uniform
# 如果需要将 rand 进行区间平移,则建议使用 a + (b-a) * rand(m, n) 的方式
"""
生成 3 行 2 列随机数
[[0.29727613 0.37456884]
 [0.52293124 0.1991879 ]
 [0.14484268 0.43416269]]
"""
x4 = np.random.rand(3 , 2)
print('从[0.0, 1.0]中均匀采样 N * M 矩阵的随机数' , x4)

# 生成均值为5,标准差为2的正态分布
"""
[0.7802702   5.07719875  4.88372568  4.10761569
 1.84558326 -2.16768918  2.39629007  4.1577861
 4.58703296  6.02016378]
"""
x5 = np.random.normal(5 , 2 , 10)
print('生成均值为5,标准差为2的正态分布' , x5)

# 在对数尺度下生成等间隔的点,如 [10^start, 10^stop]
"""
[1.00000000e-05 1.29154967e-04 1.66810054e-03 2.15443469e-02
 2.78255940e-01 3.59381366e+00 4.64158883e+01 5.99484250e+02
 7.74263683e+03 1.00000000e+05]
"""
x6 = np.logspace(-5 , 5 , 10)
print('在对数尺度[10^-5, 10^5]范围内生成10个等间隔的点' , x6)

# 生成 [low, high) 区间内的随机整数(左闭右开)
# low:最小值(包含),必须指定。
# high:最大值(不包含),若省略则默认 low 为 0,high 为传入的第一个参数
# size:输出数组的形状(如标量、元组),默认为 None(返回单个整数)
x7 = np.random.randint(-5 , 5 , 10)  # [ 0  3  3  3 -2 -1 -1 -4 -1  1]
print('在[-5, 5]内生成 10 个随机整数' , x7)
输出日志
输出日志

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 通过 numpy 生成数据的几种常用方式
    • 一、等间隔序列生成
      • 1.1 linspace方法
      • 1.2 arange方法
    • 二、随机数生成
      • 2.1 均匀分布
      • 2.2 正态分布
      • 2.3 随机整数
    • 三、特殊序列生成
      • 3.1 对数尺度序列
    • 四、方法对比与选型指南
  • 完整示例代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档