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

server/2025/1/22 12:52:21/

内容一: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/server/160461.html

相关文章

前沿技术趋势洞察与分析:探寻科技变革的多维密码

身处当下这个科技如火箭般飞速蹿升的时代&#xff0c;前沿技术就像一场来势汹汹的超强风暴&#xff0c;全方位重塑着我们生活的模样和社会的架构。深入探究这些前沿技术的发展走向&#xff0c;对咱们科技圈的从业者来说&#xff0c;那可太重要了&#xff0c;就如同在茫茫大海里…

我们常说的“翻墙”指的是什么?

所谓翻墙&#xff0c;是指绕过相应的IP封锁、内容过滤、域名劫持、流量限制等&#xff0c;实现对网络内容的访问。“翻墙”违法吗&#xff1f;毋庸置疑&#xff0c;在生活中任何形式的“翻墙”行为都是违法的&#xff01; 这里的“墙”指的是“国家公共网络监控系统”-GFW&…

【软考】【2025年系统分析师拿证之路】【啃书】第七章 软件工程(八)

目录 软件生命周期软件开发方法与模型传统软件开发方法快速应用开发&#xff08;rapid application development&#xff0c;RAD&#xff09;统一过程模型敏捷方法 软件开发环境与工具软件过程管理软件能力成熟度模型&#xff08;capability maturity model&#xff0c; CMM&am…

【gopher的java学习笔记】Java中Service与Mapper的关系详解

在后端开发中&#xff0c;Java作为一种广泛使用的编程语言&#xff0c;其架构设计和层次划分对于系统的可维护性、可扩展性和性能有着至关重要的影响。特别是在使用MyBatis等持久层框架时&#xff0c;Service层与Mapper层的关系更是值得深入探讨。本文将从Java Web应用程序的角…

【0x04】HCI_Connection_Request事件详解

目录 一、事件概述 二、事件格式及参数 2.1. HCI_Connection_Request 事件格式 2.2. BD_ADDR 2.3. Class_Of_Device 2.4. Link_Type 三、主机响应 3.1. ACL链接类型 3.2. SCO或eSCO链接类型 四、应用场景 4.1. 设备配对场景 4.2. 蓝牙文件传输场景 4.3. 蓝牙物联网…

《深入浅出HTTPS​​​​​​​​​​​​​​​​​》读书笔记(29):TLS/SSL协议

《深入浅出HTTPS​​​​​​​​​​》读书笔记&#xff08;29&#xff09;&#xff1a;TLS/SSL协议 TLS/SSL协议是一系列算法的组合&#xff0c;相比密码学算法来说&#xff0c;TLS/SSL协议的复杂性就更大了&#xff0c;主要体现在以下方面。 ◎协议设计的复杂性&#xff1…

项目练习:若依后台管理系统-后端服务开发步骤(springboot单节点版本)

文章目录 1、用Maven搭建项目脚手架&#xff0c;父子工程依赖。2、引入SpringBoot Web容器依赖3、引入Mybatisdruid依赖4、实现接口查询数据5、整合logback日志功能 1、用Maven搭建项目脚手架&#xff0c;父子工程依赖。 root模块的pom添加plugin配置 <build><plugins…

mkv转码mp4(ffmpeg工具)

基于windows&#xff0c;Linux也可以用&#xff0c;都是命令行 下载路径&#xff08;https://github.com/BtbN/FFmpeg-Builds/releases&#xff09; 下载安装包&#xff1a;ffmpeg-n6.1-latest-win64-lgpl-6.1.zip&#xff0c;&#xff08;根据自己的平台选择下载&#xff09;并…