3 数据分析--Numpy

Numpy:用于存储和处理大型矩阵,比python自身的嵌套列表结构要高校很多

anaconda:是一个开源的python发行版本,包括conda,python以及一大堆安装好的工具包
ipython 开发环境,解释器
jupyter notebook是编辑工具

anaconda包含了jupyter notebook编辑器和ipython编辑器,我们可以在jupyter notebook中使用ipython解释器编写代码

jupyter中的魔法命令

  1. 执行.py文件:%run .py文件的路径
  2. 运行计时,一般用于统计耗时较长代码的运行时长:%time statement
    运行计时,一般用于统计耗时较短代码的运行时长:
    %timeit statement
    %timeit -r 运行次数 -n 循环次数 statement
    用于耗时较短
    %%timeit
    statement1
    statement2
    statement3
    用于耗时较长
    %%time
    statement1
    statement2
    statement3
  3. %who:查询当前会话的所有变量和函数名称
  4. %whos:查询当前会话的所有变量和函数名称的详细信息
  5. %who_ls: 返回一个字符串列表,列表中是当前会话的所有变量和函数名称
  6. lsmagic:查看魔法命令的文档

numpy数组的创建

ndarry是numpy中表示数组的重要形式

np.array()创建
I=[1,2,3,4,5]
type(I)   # list
I = np.array(I)
type(I)   # numpy.ndarray
I.shape    #(5,)

注意:numpy默认ndarry的所有元素的类型是相同的
如果传进来的列表中包含不同的类型,则统一为同一类型:str>float>int

使用np的routines创建

np.ones(shape,dtype=None,order='C')

"""
创建一个所有元素都为1的多维数组
shape:形状
dtype=None:元素类型
order:{’C‘,'F'}可选,默认值:C是否在内存中以行主或列主(Fortran)顺序存储多维数据,一般默认即可
"""
np.ones(shape,dtype=None,order='C')n = np.ones(shape=(3,4))
n = np.ones(shape=(3,4),dtype=np.int16)

np.zeros(shape,ddtype=float,order='C')
np.full(shape, fill_value,dtype=None, order='C')

"""
创建一个所有元素都为指定元素的多维数组
shape:形状
fill_value:填充值
dtype=None:元素类型
order:{’C‘,'F'}可选,默认值:C是否在内存中以行主或列主(Fortran)顺序存储多维数据,一般默认即可
"""
np.full(shape=(3,4),fill_value = 5,dtype=np.int16)

np.eye(N,M=None, k=0, dtype=float)

"""
创建一个对角线为1,其他位置为0的二维数组,
单位矩阵:主对角线为1,其他都为0
N:行数
M:列数,默认为None,表示和函数一样
k=0:主对角线向右偏移0个位置
dtype=None:元素类型
"""
np.eye(6)
np.eye(6,9,dtype=np.int8)
np.eye(6,9,k=2,dtype = np.int8)

等差数列
np.linspace(start,stop,num=50,endpoint = True, retstep=False, dtype = None)

'''
创建一个等差数列
start:开始值
stop:结束值
num=50: 等差数列中默认有50个数
endpoint=True:是否包含结束值
retstep=False:是否返回等差值(步长)
dtype=None: 元素类型
'''
np.linspace(0,100,num = 51)np.linspace(0,100,num = 50,dtype = np.int16)np.linspace(0,100,num = 51,endpoint=False)np.linspace(0,100,num = 51,endpoint=False,retstep = True)

np.arange([start,] stop,[step,]dtype=None)

'''
创建一个数字范围的数组
和python中的range功能类似
start:开始值(可选)
stop: 结束值(不可选)
step: 步长(可选)
dtype = None: 元素类型
'''
np.arange(10)
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.arange(2,10)
# array([2, 3, 4, 5, 6, 7, 8, 9])
np.arange(2,10,3)
# array([2, 5, 8])

np.random.randint(low, high=None,size=None, dtype = 'I')

'''
创建一个随机整数的多维数组
low:最小值
high=None:最大值high=None时,生成的数字在[0,low)区间内如果使用high这个值,则生成的数字在[low,high)区间
size=None: 数组形状,默认只输出一个随机值
dtype = None:元素类型b
'''
np.random.randint(3,10)   #生成一个左闭右开的随机数np.random.randint(3,10,size = 6)   #生成1*6的数组np.random.randint(3,10,size = (3,4)) # 生成3*4维的数组

np.random.randn(d0,d1,...,dn)

'''
创建一个服从标准正态分布的多维数组 N(0,1):以0为均数,1为标准差的正态分布
创建一个所有元素都为1的多维数组
dn: 第n维度的数值
'''
np.random.randn()   # 生成一个数
np.random.randn(3,4)  #生成3*4列,服从正太分布的随机数

np.random.normal(loc=0.0,scale = 1.0,size=None)

'''
创建一个服从正态分布的多维数组
loc=0.0:均值
scale: 标准差,对应分布的宽度,scale越大,正态分布的曲线越矮胖,scale越小,曲线越高瘦
size=None:数组形状
'''
np.random.normal(loc=1,scale =0.5, size=(3,4))

np.random.random(size=none)

'''
创建一个元素为[0,1)的随机数的多维数组
size=None:数组大小
'''

np.random.rand(d0,d1,...,dn)

'''
创建一个元素为[0,1)的随机数的多维数组
和np.random.random功能类似,掌握其中一个即可
dn:第n个维度的数值
'''### ndarry的属性
ndim:维度
shape:形状
size:总数据量
dtype:元素类型
```python
cat.ndim   # 3
cat.shape   # (1280,1280,3)
cat.size     #4915200
cat.dtype # unit8 无符号整数

Ndarray的基本操作

索引

一维与列表完全一致 多维时同理

I=np.random.randint(0,10,size=(3,4))
I[-1,-1] # =I[-1][-1] = I[2][3]

根据索引修改数据

n[-1,-1]=90
切片

n[n,m] 左闭右开

I = np.arange(10)
# I = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
I[3:6]
# I = [3, 4, 5]
I[::-1] #反转n=np.random.randint(0,10,size=(6,8))
'''
array([[3, 4, 8, 6, 6, 5, 5, 7],[2, 3, 7, 1, 8, 2, 2, 4],[6, 2, 1, 9, 4, 7, 3, 7],[2, 8, 5, 7, 8, 3, 9, 8],[7, 8, 3, 2, 3, 7, 1, 5],[1, 1, 2, 5, 8, 5, 5, 3]])
'''
#取一行
n[0]
# 取连续的多行
n[1:4]
# 取不连续的多行:多加一个中括号
n[[1,2,4]]# 取一列
print(n[:,0])
print(n[1:4,0])
# 取连续的多列:切片
print(n[:,2:5])
# 取不连续的多列:中括号
print(n[:,[1,3,6]])#对行进行反转
n[::-1]
# 对列进行反转,相当与第三维度做反转
n[:,::-1]n[::10] #表示每隔10个数去一个值
变形 reshape
n=np.arange(1,21)
n.shape
n2 = np.reshape(n, (4,5))
n2.reshape((5,4))
# 变成一维度
n2.reshape(20)
# 使用-1:表示任意剩余维度长度
n2.reshape((4,-1))
n2.reshape((-1,2))
# n2.reshape((-1,-1,2)) 会报错 不能写两个未知数
级联(两个数组合并)

np.comcatenate()
参数是列表或是元组
级联的数组维度必须相同
可通过axis参数改变级联的方向
左右合并:行数一致
上下合并:列数一致,默认上下级联

# 默认axis =0  行合并即上下级联
np.concatenate((n1,n2)) 
# axis = 1 列级联 即左右级联
np.concatenate((n1,n2),axis = 1)

np.hstack() 与 np.vstack()
水平级联和垂直级联
用法与上面一致

切分/拆分/分割

np.split 即可水平也可垂直拆分
np.vsplit 垂直拆分
np.hsplit 水平拆分

# 垂直拆分,平均拆成三份
np.vsplit(n,3)# 垂直拆分,按照指定位置取拆分,(0,1],(1,2],(2,4],(4,5]
np.vsplit(n,(1,2,4))# split: 可以做水平拆分或垂直拆分
#axis=0 行
#axis=1 列
np.split(n,2)   #默认按行来拆分
np.split(n,2, axis=0)np.split(n,(1,2,4),axis=1)
副本/复制/拷贝

copy() 函数创建副本
赋值

n =np.arange(10)
n2 = n
n2[0]=100
display(n,n2)
#array([100,   1,   2,   3,   4,   5,   6,   7,   8,   9])
#array([100,   1,   2,   3,   4,   5,   6,   7,   8,   9])

拷贝(是一个深拷贝)

n1=np.arange(10)
n2 = n1.copy()
n2[0]=100
display(n1,n2)
#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
#array([100,   1,   2,   3,   4,   5,   6,   7,   8,   9])

聚合操作

np.sum

np.sum(n)     # 整个数组的所有数相加的和
np.sum(n[3])   # 第三行的和
np.sum(n, axis =0) # 行相加,是每一列的多行相加
np.sum(n,axis=1)   # 列相加,每一行的多列相加# 求一个四维数组的后面两维度的和
np.sum(n,axis=(2,3))

np.min
np.max
np.mean
np.average
np.median
np.percentile

np.percentile(n,q=50)  # 百分位数

np.argmin 第一个最小值对应的下标
np.argmax 第一个最大值对应的下标
np.std 标准差
np.var 方差
np.power(n,3) 求矩阵n的3次方
np.argwhere 按条件查找

np.argwhere(n==np.max(n))   #按条件找到所有最大值的下标

np.sum和np.nansum(nan: not a number)
non:数值类型,not a number: 不是一个正常的数值,表示空值
np.nan:float类型

n=np.array([1,2,3,np.nan])
np.sum(n)    #nan
np.nansum(n)  # 6.0

矩阵操作

基本矩阵操作

算数运算符

n+10
n-10
n*10
n/10
n//10 # 整数
n**2  #2次方   n**3 3次方
n% 2  #余数n1+n2  #对应元素相加
n1*n2  #对应元素相乘

线性代数
矩阵积 np.dot()–第一个矩阵的列数和第二列的行数需要相等
其他操作:
矩阵的逆 np.linalg.inv(n) --矩阵n需要是方阵
矩阵的行列式 np.round(np.linalg.det(n))
矩阵的秩(满秩矩阵,奇异矩阵)
np.linalg.matrix_rank(n)

矩阵的正则化(归一化):
n=(n-min)/(max-min)

广播机制

ndarray广播机制的两条规则
规则一:为缺失的维度补维度
规则二:缺失元素用已有值填充

其他常见的数学操作

abs 求绝对值
sqrt 求平方跟
square 求平方
exp 求以e为底的指数
log(n) 求自然对数,以e为底的对数
log2(n)
log10(n)
sin
cos
tan 正切
round 四舍五入
ceil 向上取整
floor 向下取整
cumsum 累加

n=np.arange(0,10)
# n =[0,1,2,3,4,5,...,9]
np.cumsum(n)
# array([ 0,  1,  3,  6, 10, 15, 21, 28, 36, 45])

np.e 表示e即2.7.。。。。

numpy的其他操作

ndarray排序(内部是快速排序):
np.sort():不改变原数组
ndarray.sort(): 改变原数组,不多占内存空间

ndarray文件操作

保存数组

save:保存ndarray到一个npy文件
savez: 将多个array 保存到做一个npz文件中

x= np.arange(5)
y= np.arange(10,20)# save
np.save('x',x)  # 文件名为x.npy#savez
np.savez('arr.npz',xarr =x,yarr=y)
# .npy和npz文件打不开,当时可以读取出来
读取数组
# 使用save保存的
np.load('x.npy')
# 使用savez保存的
np.load('arr.npz')['xarr']
csv,txt 文件的读写操作
n = np.random.randint(0,10,size=(3,4))
# 写
np.savetxt('arr.csv',n,delimiter =',')
# 读
np.loadtxt('arr.csv',delimiter=',')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/748330.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rust最新版本安装-提高下载速度

1)拉取依赖包将安装脚本输出到本地rust.sh脚本中 curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs > rust.sh 2)更新rust.sh脚本内容、修改源 # 编辑rust.sh vi rust.sh # 将RUSTUP_UPDATE_ROOT的值替换为: RUSTUP_UPDATE_ROOT&q…

SpringBoot3框架,Web开发(上)

web场景,默认配置: 包含了 ContentNegotiatingViewResolver 和 BeanNameViewResolver 组件,方便视图解析默认的静态资源处理机制: 静态资源放在 static 文件夹下即可直接访问自动注册了 Converter,GenericConverter,Formatter组件…

JVM-5

1.选择垃圾收集器 如果你的堆大小不是很大(比如 100MB ),选择串行收集器一般是效率最高的。 参数: -XX:UseSerialGC 。如果你的应用运行在单核的机器上,或者你的虚拟机核数只有单核,选择串行收集器依然是合…

论文阅读:FCB-SwinV2 Transformer for Polyp Segmentation

这是对FCBFormer的改进,我的关于FCBFormer的论文阅读笔记:论文阅读FCN-Transformer Feature Fusion for PolypSegmentation-CSDN博客 1,整体结构 依然是一个双分支结构,总体结构如下: 其中一个是全卷积分支&#xff…

数据结构之链式二叉树

当我们初步了解二叉树后 我们就可以进一步去深入学习二叉树了 1.链式二叉树的遍历 这里我们先去定义链式二叉树的结构 分为两个指针 一左一右 他们分别指向左子树和右子树 typedef int BTDataType;typedef struct BinaryTreeNode {BTDataType data;struct BinartTreeNod…

【Pandas】详细介绍

Pandas讲解 Pandas是一个开源的、BSD许可的库,为Python编程语言提供高性能的、易于使用的数据结构和数据分析工具。通常,Pandas被广泛应用于各种数据分析、数据科学、统计建模等任务。Pandas的名称来自于"Panel Data"和"Python Data Ana…

功能包是 ROS 中最基本的软件组织单元,它可以包含节点、消息、服务、动作、参数配置文件、启动文件以及其他 ROS 资源

文章目录 ROS(Robot Operating System)功能包功能包名在 CMakeLists.txt 和 package.xml 中一定要完全相同 ROS(Robot Operating System)功能包 ROS(Robot Operating System)功能包是用于组织、构建和管理…

动态IP和静态IP

与静态 IP 地址不同,动态 IP 地址会定期更改。让我们来分析一下: 1. IP 地址基础知识: * IP 地址是一个数字标签,用于唯一标识网络上的每个设备。 * 当设备通过网络通信时,数据会在它们之间来回传输。每个数据包都标有…

【设计模式】一、设计模式概述

文章目录 一、设计模式概述(一)设计模式是什么1. 设计模式的定义2. 设计模式的组成要素3、常用设计模式一览表 (二)设计模式的优点(用途)※ 本文小结 一、设计模式概述 (一)设计模式…

tcp/ip协议2实现的插图,数据结构8 (30 - 32章)

(201) 201 三十0 中断优先级补充 (202) 202 三十1 TCP的用户需求 函tcp_usrreq一 (203) 203 三十2 TCP的用户需求 函tcp_usrreq二 (204) 204 三十3 TCP的用户需求 函tcp_usrreq三 (205) 205 三十4 TCP的用户需求 函tcp_usrreq四 (206) 206 三十5 TCP的用户需求 函tcp_usrreq五 …

docker实战(3)

1, jdk17版本的dockerfile FROM eclipse-temurin:17-jre ADD ./target/ods-poc-0.0.1-SNAPSHOT.jar /home/app/app.jar WORKDIR /home/app ENV TZ Asia/Shanghai ENTRYPOINT ["java","-jar","/home/app/app.jar"] EXPOSE 8083dockerfile 1, …

emment语法

文章目录 1. 生成普通的标签2. 生成 div类名3. 生成指定标签类名/id 值4. 生成带有子元素的标签5. 生成内部文本6. 一次可以生成多个标签7. 生成带有指定属性 的元素8. 生成相邻兄弟元素 1. 生成普通的标签 本质使用的就是元素选择器,例如 div p a 标签等等。 2. …

Openlayers入门教程 --- 万字长篇

也许你还不熟悉Openlayers,也许你是一个Openlayers小白,零基础没关系,这篇文章提供最基础的 Openlayers 教程,简单易学,贯穿整个Openlayers 知识体系。读完本文,您将会对 Openlayers 有一个全新的认识。 文…

人类程序员真要失业?首位“AI软件工程师”亮相引爆科技圈

初创公司Cognition成立不到两个月,但已经拥有十名天才工程师。他们推出了一款名为Devin的人工智能(AI)助手,可以协助人类软件工程师完成各种开发任务。Devin与现有的其他AI编码者不同,它能够从头开始构建网站、自动部署…

WPF中 INotifyPropertyChanged

在Windows Presentation Foundation (WPF)中,INotifyPropertyChanged 是一个核心接口,用于实现实体类与视图之间的数据双向绑定。当实体类的某个属性值发生变化时,通过实现此接口可以立即通知绑定到该属性的所有 UI 控件进行更新,…

图像分类技术在电商平台的创新应用与实践

一、引言 在当今快速发展的互联网电商领域,商家面临着激烈的竞争和不断变化的市场需求。我们在服务电商的过程中,利用AI大模型技术创新性地引入了图像分类技术,为供应链管理带来了革命性的变革。接下来,我们将深入探讨这一项目的…

php前端和java后端数据调用流程

php前端和java后端数据调用流程 前端 1、新建php页面title.php <title>标题</title> <td width"30%" class"form-key">标题内容</td> <td width"70%"><input type"text" class"form-control…

XML语言的学习记录2-XMLHttpRequest

学习笔记&#xff1a;XMLHttpRequest 特点&#xff1a; 在不重新加载页面的情况下更新网页在页面已加载后从服务器请求数据在页面已加载后从服务器接收数据在后台向服务器发送数据创建XMLHttpRequest对象 xmlhttpnew XMLHttpRequest()&#xff1b;IE5 和 IE6&#xff0c;使用 …

线性代数笔记18--行列式公式、代数余子式

1. 行列式公式推导 二阶行列式推导 [ a b c d ] [ a 0 c d ] [ 0 b c d ] [ a 0 0 d ] [ a 0 c 0 ] [ 0 b c 0 ] [ 0 b 0 d ] [ a 0 0 d ] − [ b 0 0 c ] a d − b c \begin{align} \begin{bmatrix} a & b \\ c & d \end{bmatrix}& \begin{bmatrix} a &…

51单片机基础篇系列-超声波测距

&#x1f308;个人主页&#xff1a;会编辑的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” HC-SR04产品特点 典型工作用电压&#xff1a;5V 超小静态工作电流&#xff1a;小于2mA 感应角度&#xff1a;不大于15度 探测距离&#xff1a;2cm-400cm 高精度&#…