Numpy基础01(Jupyter基本用法/Ndarray创建与基本操作)

ops/2025/1/23 22:51:08/

内容一:Jupyter开发环境

  • IPython 是一个增强型的 Python 交互式解释器,提供了自动补全、命令历史、魔法命令等功能。它支持与操作系统命令交互、内联绘图和多语言扩展,并可与 Jupyter Notebook 集成,适用于数据分析和科学计算。IPython 还支持远程访问、包管理和插件扩展,是一个功能强大且灵活的开发工具。

  • Jupyter Notebook是IPython的开发环境。

1.1 Jupyter Notebook键盘输入模式

  • 命令模式:键盘输入运行程序命令;
  • 编辑模式:允许你往单元中键入代码或文本;

1.2 Jupyter Notebook的快捷键

  • 编辑模式:
Tab:代码补全或缩进
Shift+Tab:提示
Shift-Enter:运行本单元,选中下一单元
Ctrl-Enter:运行本单元
Alt-Enter:运行本单元,在下面插入一单元
  • 命令模式:
Shift+Enter:运行本单元,选中下个单元
Ctrl+Enter:运行本单元
Alt+Enter:运行本单元,在其下插入新单元
Y:单元转入代码状态
M:单元转入markdown状态
A:在上方插入新单元
B:在下方插入新单元
DD:删除选中的单元

1.3 IPython魔法命令

  • %run *.py:使用此命令运行外部python文件(默认是当前目录,也可以使用绝对路径)
#注意:
1.当使用魔法命令去执行外部文件时,外部文件的函数可以在当前会话中使用
2.相当于import 外部模块
  • 统计运行时间

%time statement:适合对运行时间长的程序进行统计

%timeit statement:适合对运行时间短的程序求其平均运行时间
%%timeit statement1 statement2 statement3:可以使用两个百分号来测试多行代码的平均运行时间:

内容二: Numpy基础

NumPy (Numerical Python) 是Python的一个开源的数值计算库。可用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等。

2.1 创建ndarray

ndarray是Numpy中表示数组的重要类型,表示n维数组。

  • 使用np.array()来创建数组
1.参数为列表类型(list()2.ndarray默认的所有元素类型是相同的
3.如果传进来的列表中包含不同类型的,则按照优先级统一为一致的类型:优先级:str > float > int
4.ndarray的常见数据类型:
int: int8、uint8、int16、int32、int64
float: float16、float32、float64
str:字符串
arr = np.array([1, 2, 3, 4])
print(type(arr))#<class 'numpy.ndarray'>
print(arr)#[1 2 3 4]
print(arr.shape)#数组的形状,返回表示数组维数的元组:(4,)
  • 使用np的函数创建数组
  1. np.ones()
1.用来创建数组元素均为1的数组
2.参数shape:用来标注数组的维数,dtype用来标注数组中元素的类型arr = np.ones(shape=(3,))
arr = np.ones(shape=(3, 4), dtype=np.int8)
  1. np.zeros(shape,dtype=float,order='C)
1.创建一个所有元素都为0的多维数组
2.参数说明:shape:形状,dtype=None:元素类型
  1. np.full(shape,fill_value, dtype=None,order='C)
1.创建一个所有元素都为指定元素的多维数组
2.参数说明:shape:形状,fillvalue:填充值dtype=None:元素类型arr = np.full((3, 4), 3)
>>>array([[3, 3, 3, 3],[3, 3, 3, 3],[3, 3, 3, 3]])
  1. np.eye(N,M=None,k=0, dtype=float)
1.对角线为1其他的位置为0的二维数组(单位矩阵)
2.参数说明:N:行数,M:列数,
默认为None,表示和行数一样(可以行和列不一致),k=0:向右偏移0个位置(k>0向右偏移, k<0 向左偏移),
dtype=None:元素类型
  1. np.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)
1.创建一个等差数列
2.参数说明:
start:开始值 stop:结束值
num=50:等差数列中默认有50个数
endpoint=True:是否包含结束值
retstep=False:是否返回等差值(步长)
dtype=None:元素类型#等差数列:0,2,4,6....100
arr = np.linspace(0, 100, 51, retstep=True, dtype=int)
  1. np.arange([start,]stop,[step,]dtype=None)
1.创建一个数值范围的一维数组和Python中range功能类似
2.参数说明:
start:开始值(可选)stop:结束值(不包含)
step:步长(可选) dtype=None:元素类型arr = np.arange(5, 20, 3)
  1. np.random.randint(low,high=None,size=None)
1.创建一个随机整数的多维数组
2.参数说明:
low:最小值 high=None:最大值
high=None时,生成的数值在[0,low)区间内
如果使用high这个值,则生成的数值在[low,high)区间
size=None:数组形状,默认只输出一个随机值
dtype=None:元素类型arr = np.random.randint(3, 10, size=(3, 4))
  1. np.random.randn(d0,d1,.,dn)
1.创建一个服从标准正态分布的多维数组
2.标准正态分布又称为u分布,是以0为均数、以1为标准差的正态分布,记为N(01)标准正态分布,在0左
右出现的概率最大,越远离出现的概率越低。
3.参数:dn为n维度上的数值
  1. np.random.normal(loc=0.0,scale=1.0,size=None)
1.创建一个服从正态分布的多维数组
2.参数说明:
loc=0.0:均值,对应着正态分布的中心
scale:标准差,对应分布的宽度,scale越大,正态分布的曲线越矮胖,scale越小,曲线越高瘦
size=None:数组形状
  1. np.random.random(size=None)
1.创建一个元素为0~1(左闭右开)的随机数的多维数组
2.参数说明:size=None:数组形状

2.2 ndarray的属性

  • shape属性
np.shape
>>>(d0, d1, ..., dn)
几个数字就表示几维度,dn表示n维度上的数据
  • ndim属性
np.ndim #直接返回维度
  • size属性
np.size #直接返回数组元素的个数(d0*d1*...*dn)
  • dtype属性
np.dtype #返回数据的类型

2.3 Numpy的基本操作

2.3.1 ndarray索引操作
  • 一维数组:同一维列表大致相同
n = np.array([1, 2, 3, 4, 5])
n[0], n[-1]
#(1, 5)
  • 多维数组
n = np.random.randint(0, 10, size=(3, 4, 5))
print(n)
# 访问最后一个元素并改为66
n[2,3,-1] = 66 
print(n)# 最后一行元素并改为66
n[2, 3, ] = 66
print(n)# 最后一行元素并改为1,2,3,4,5
n[2, 3] = [1,2,3,4,5]
print(n)
2.3.2 ndarray切片操作
  • 一维数组
n = np.array([1,2,3,4,5,6,7,8,9])
print(n[1: 5]) #包前不包后
print(n[::-1]) #反转
  • 多维数组
n = np.random.randint(0, 10, size=(3, 4))
print(n)#取连续多行:切片
print(n[0:2])
#取不连续的多行:中括号
print(n[[0, 2]])
print(n[[0, 2, 2]])#可重复取#取连续多列:切片
print(n[:, 0:3]) #取1,2,3列
#取不连续的多列:中括号
print(n[:, [0, 2]]) #取1,3列
print(n[:, [0, 2, 2]])#可重复取

http://www.ppmy.cn/ops/152586.html

相关文章

从零安装 LLaMA-Factory 微调 Qwen 大模型成功及所有的坑

文章目录 从零安装 LLaMA-Factory 微调 Qwen 大模型成功及所有的坑一 参考二 安装三 启动准备大模型文件 四 数据集&#xff08;关键&#xff09;&#xff01;4.1 Alapaca格式4.2 sharegpt4.3 在 dataset_info.json 中注册4.4 官方 alpaca_zh_demo 例子 999条数据, 本机微调 5分…

VIT论文阅读与理解

transform网络结构 vision transform网络结构 图1&#xff1a;模型概述。我们将图像分割成固定大小的补丁&#xff0c;线性嵌入每个补丁&#xff0c;添加位置嵌入&#xff0c;并将结果向量序列馈送到标准Transformer编码器。为了执行分类&#xff0c;我们使用标准方法向序列中添…

Grafana系列之Dashboard:新增仪表板、新增变量、过滤变量、变量查询、导入仪表板、变量联动、Grafana Alert

概述 关于Prometheus和Grafana的安装&#xff0c;略过。 写在前面 Dashboard&#xff1a;仪表板&#xff0c;可包含多个PanelPanel&#xff1a;面板&#xff0c;Dashboard中的组件 如有写得不对的地方&#xff0c;烦请指出。 新增仪表板 点击右上角的 选择New dashboard…

从零到一:Spring Boot 与 RocketMQ 的完美集成指南

1.Rocket的概念与原理 RocketMQ 是一款由阿里巴巴开源的分布式消息中间件&#xff0c;最初用于支持阿里巴巴的海量业务。它基于发布-订阅模型&#xff0c;具备高吞吐、低延迟、高可用和强一致性的特点&#xff0c;适用于消息队列、大规模数据流处理等场景。以下是对 RocketMQ …

如何为64位LabVIEW配置正确的驱动程序

在安装 64位 LabVIEW 后&#xff0c;确保驱动程序正确配置是关键。如果您首先安装了 32位 LabVIEW 和相关驱动&#xff0c;然后安装了 64位 LabVIEW&#xff0c;需要确保为 64位 LabVIEW 安装和配置适当的驱动程序&#xff0c;才能正常访问硬件设备。以下是详细步骤&#xff1a…

【odoo】Odoo 中的 Controllers 介绍与示例

在 Odoo 中&#xff0c;controllers 是一种用来处理 HTTP 请求的机制。它是 Odoo 中 Web 模块的重要组成部分&#xff0c;主要用于接收前端的 HTTP 请求、进行业务处理&#xff0c;然后返回响应。controllers 是 Odoo 和外部世界&#xff08;如前端页面、API 客户端等&#xff…

Java设计模式 十三 代理模式 (Proxy Pattern)

代理模式 (Proxy Pattern) 代理模式是一种结构型设计模式&#xff0c;它为其他对象提供一种代理&#xff08;或占位符&#xff09;以控制对该对象的访问。通过代理模式&#xff0c;我们可以在不修改目标对象的情况下&#xff0c;控制对其的访问&#xff0c;添加额外的功能&…

提升 Go 开发效率的利器:calc_util 工具库

提升 Go 开发效率的利器&#xff1a;calc_util 工具库 在日常开发中&#xff0c;我们常常需要处理数组&#xff08;切片&#xff09;的交集、差集、并集操作&#xff0c;或者更新和过滤数据。尽管这些功能可以手动实现&#xff0c;但重复的逻辑代码不仅影响效率&#xff0c;也…