当前位置: 首页 > news >正文

【NumPy】专题学习

参考:NumPy Ndarray 对象 | 菜鸟教程 (runoob.com)

深入了解NumPy中的随机数模块:numpy.random - 知乎 (zhihu.com)

NumPy Ndarray 对象

NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。

ndarray 对象是用于存放同类型元素的多维数组。

创建一个 ndarray 只需调用 NumPy 的 array 函数即可:

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

参数说明:

名称描述
object数组或嵌套的数列
dtype数组元素的数据类型,可选
copy对象是否需要复制,可选
order创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)
subok默认返回一个与基类类型一致的数组
ndmin指定生成数组的最小维度
import numpy as np 
a = np.array([[1,  2],  [3,  4]])  
print (a)

NumPy 的数组中比较重要 ndarray 对象属性有:

属性说明
ndarray.ndim数组的秩(rank),即数组的维度数量或轴的数量。
ndarray.shape数组的维度,表示数组在每个轴上的大小。对于二维数组(矩阵),表示其行数和列数。
ndarray.size数组中元素的总个数,等于 ndarray.shape 中各个轴上大小的乘积。
ndarray.dtype数组中元素的数据类型。
ndarray.itemsize数组中每个元素的大小,以字节为单位。
ndarray.flags包含有关内存布局的信息,如是否为 C 或 Fortran 连续存储,是否为只读等。
ndarray.real数组中每个元素的实部(如果元素类型为复数)。
ndarray.imag数组中每个元素的虚部(如果元素类型为复数)。
ndarray.data实际存储数组元素的缓冲区,一般通过索引访问元素,不直接使用该属性。

创建数组

numpy.empty 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组:

numpy.empty(shape, dtype = float, order = 'C')

numpy.zeros创建指定大小的数组,数组元素以 0 来填充

numpy.ones创建指定形状的数组,数组元素以 1 来填充

numpy.zeros_like 用于创建一个与给定数组具有相同形状的数组,数组元素以 0 来填充。(区别在于:numpy.zeros 可以直接指定要创建的数组的形状,而 numpy.zeros_like 则是创建一个与给定数组具有相同形状的数组。)

类似的有numpy.ones_like。

还可以用arange函数生成数组:

numpy.arange(start, stop, step, dtype = None)

值在半开区间 [开始,停止]内生成(换句话说,包括开始但不包括停止的区间),返回的是 ndarray。

随机数创建

基本的随机数生成函数有三个,也就是rand(),randn(),以及randint()

numpy.random.rand() - 生成均匀分布的在[0, 1)内的随机数 

参数:numpy.random.rand(d0, d1, ..., dn) 接受多个整数参数,每个参数代表生成随机数的维度。可以使用逗号分隔的整数来指定多维数组的形状。

import numpy as np# 生成一个[0, 1)范围内的随机浮点数
rand_num = np.random.rand()
print(rand_num)# 生成一个3x3的二维数组,包含[0, 1)范围内的随机浮点数
rand_array = np.random.rand(3, 3)
print(rand_array)

numpy.random.randn() - 生成标准正态分布的随机数

参数:numpy.random.randn(d0, d1, ..., dn) 同样接受多个整数参数,用于指定生成随机数的维度。

import numpy as np# 生成一个标准正态分布的随机浮点数
rand_num = np.random.randn()
print(rand_num)# 生成一个3x3的二维数组,包含标准正态分布的随机浮点数
rand_array = np.random.randn(3, 3)
print(rand_array)

numpy.random.randint() - 生成整数随机数

  • 参数:numpy.random.randint(low, high, size=None, dtype=int) 其中:
    • low 是生成的随机数的下界(包含在内)。
    • high 是生成的随机数的上界(不包含在内)。
    • size 是生成随机数的形状,可以是整数或元组。如果不提供,默认生成一个随机整数。
    • dtype 是生成的随机数的数据类型,默认为整数。
import numpy as np# 生成一个[0, 10)范围内的整数随机数
rand_int = np.random.randint(0, 10)
print(rand_int)# 生成一个1x5的一维数组,包含[0, 10)范围内的整数随机数
rand_array = np.random.randint(0, 10, size=(1, 5))
print(rand_array)

概率分布生成函数

正态分布(Normal Distribution)

  • 生成方法: 使用numpy.random.normal()函数生成。需要指定均值(loc)和标准差(scale)。
  • 特点: 正态分布是一种对称的、钟形曲线分布,均值、中位数和众数相等。它具有良好的数学性质,广泛用于自然现象、社会科学、工程等领域的建模。
  • 常见场景: 金融领域的资产价格、身高和体重分布、测量误差分布等。
import numpy as np
import matplotlib.pyplot as plt# 生成1000个均值为0、标准差为1的正态分布随机数
data = np.random.normal(0, 1, 10000)# 绘制直方图
plt.hist(data, bins=30, density=True, alpha=0.6, color='g')
plt.title("Normal Distribution")
plt.show()

还有均匀分布(Uniform Distribution)、泊松分布(Poisson Distribution)、指数分布(Exponential Distribution)、二项分布(Binomial Distribution)等等,现用现查吧。深入了解NumPy中的随机数模块:numpy.random - 知乎 (zhihu.com)

构建等差、等比数组

numpy.linspace()

numpy.linspace 函数用于创建一个一维数组,数组是一个等差数列构成的,格式如下:

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

参数说明:

参数描述
start序列的起始值
stop序列的终止值,如果endpointtrue,该值包含于数列中
num要生成的等步长的样本数量,默认为50
endpoint该值为 true 时,数列中包含stop值,反之不包含,默认是True。
retstep如果为 True 时,生成的数组中会显示间距,反之不显示。
dtypendarray 的数据类型
import numpy as np
a = np.linspace(1,10,10)
print(a)

numpy.logspace()

numpy.logspace 函数用于创建一个于等比数列。格式如下:

np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)

base 参数意思是取对数的时候 log 的下标。

参数描述
start序列的起始值为:base ** start
stop序列的终止值为:base ** stop。如果endpointtrue,该值包含于数列中
num要生成的等步长的样本数量,默认为50
endpoint该值为 true 时,数列中中包含stop值,反之不包含,默认是True。
base对数 log 的底数。
dtypendarray 的数据类型
import numpy as np
a = np.logspace(0,9,10,base=2)
print (a)
[  1.   2.   4.   8.  16.  32.  64. 128. 256. 512.]

数组拼接

numpy提供了numpy.concatenate((a1,a2,...), axis=0)函数。能够一次完成多个数组的拼接。其中a1,a2,...是数组类型的参数 

concatenate(a_tuple, axis=0, out=None)
"""
参数说明:
a_tuple:对需要合并的数组用元组的形式给出
axis: 沿指定的轴进行拼接,默认0,即第一个轴
"""
>>> import numpy as np
>>> ar1 = np.array([[1,2,3], [4,5,6]])
>>> ar2 = np.array([[7,8,9], [11,12,13]])
>>> ar1
array([[1, 2, 3],[4, 5, 6]])
>>> ar2
array([[ 7, 8, 9],[11, 12, 13]])>>> np.concatenate((ar1, ar2))  # 这里的第一轴(axis 0)是行方向
array([[ 1, 2, 3],[ 4, 5, 6],[ 7, 8, 9],[11, 12, 13]])>>> np.concatenate((ar1, ar2),axis=1)  # 这里沿第二个轴,即列方向进行拼接
array([[ 1, 2, 3, 7, 8, 9],[ 4, 5, 6, 11, 12, 13]])

参考:Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)_python两个数组拼接-CSDN博客

相关文章:

  • Qt优秀开源项目之二十三:QSimpleUpdater
  • Qemu开发ARM篇-6、emmc/SD卡AB分区镜像制作
  • Redisson分布式锁的概念和使用
  • 【ShuQiHere】深入解析 B+ 树(B+ Tree):高效数据存储与快速查找的终极方案
  • 解决多尺度网络中上采样尺寸不一致问题
  • Windows内核编程基础(3)
  • excel 单元格一直显示年月日
  • Webpack教程-概述
  • 趣笔阁爬虫实验
  • 华为eNSP使用详解
  • vue-cli,element-plus,axios,proxy
  • docker-图形化工具-portainer的使用
  • NXP i.MX8系列平台开发讲解 - 4.2.2 摄像头篇(二) - 摄像头DVP接口
  • PG逻辑订阅功能
  • 【Mysql多数据源实现读写分离的几种方案】
  • download使用浅析
  • ES6--对象的扩展
  • Java|序列化异常StreamCorruptedException的解决方法
  • log4j2输出到kafka
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • Spring核心 Bean的高级装配
  • 基于web的全景—— Pannellum小试
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 微信小程序设置上一页数据
  • 消息队列系列二(IOT中消息队列的应用)
  • 一个完整Java Web项目背后的密码
  • 用 Swift 编写面向协议的视图
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • 仓管云——企业云erp功能有哪些?
  • 数据可视化之下发图实践
  • #100天计划# 2013年9月29日
  • #Datawhale AI夏令营第4期#AIGC文生图方向复盘
  • #pragma预处理命令
  • #Ubuntu(修改root信息)
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (20050108)又读《平凡的世界》
  • (LeetCode 49)Anagrams
  • (过滤器)Filter和(监听器)listener
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)大型网站的系统架构
  • .net core 控制台应用程序读取配置文件app.config
  • .NET delegate 委托 、 Event 事件
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .Net 垃圾回收机制原理(二)
  • .net 微服务 服务保护 自动重试 Polly
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .net开发时的诡异问题,button的onclick事件无效
  • .NET运行机制
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • /bin、/sbin、/usr/bin、/usr/sbin
  • @Conditional注解详解