[数据分析大全]基于Python的数据分析大全——Numpy基础

目录

  • 一、前言
  • 二、Numpy
    • Numpy数组
  • 二、创建数组
    • 初始化占位符
  • 三、输入、输出
    • 3.1 保存与载入文本文件
    • 3.2 保存与载入磁盘上的文件
  • 四、数据类型
  • 五、数组信息
  • 六、调用帮助
  • 七、数组计算
    • 7.1 算数运算
    • 7.2 比较
    • 7.3 聚集函数
  • 八、数组复制
  • 九、数组排序
  • 十、子集、切片、索引相关实现
    • 10.1 子集
    • 10.2 切片
    • 10.3 条件索引
    • 10.4 花式索引
  • 十一、数组操作
    • 11.1 转置数组
    • 11.2 改变数组形状
    • 11.3 添加或删除值
    • 11.4 合并数组
    • 11.5 分割数组


NumPy 的全称为 Numeric Python,它是 Python 的第三方扩展包,主要用来计算、处理一维或多维数组。

一、前言

  步入8月了,7月时因为项目所需,自学了深度学习相关的内容,现在已经把项目所需要的神经网络框架搭建起来了,输入输出也都归一化了,模拟误差也加上了,图像的参数提取和数据拟合也都做完了。开个新坑——
  本系列(《基于Python的数据分析大全》)是拜读了DataCamp撰写的 《Learn Python for Data Science Interactively》 (我个人把它译为《交互式学习 Python 数据科学》)有感而发,结合个人的理解编写的数据分析经验总结,旨在作为一本字典和速查手册,解决在数据分析时可能遇到的问题的实现思路和解决方法
  本文介绍的是 Numpy基础知识,全文皆用Python实现。所用代码上机调试都能运行,如果发现有问题请私信我并附上报错信息。


二、Numpy

  NumpyPython 数据科学计算和数据分析相关工作的核心库,提供了高性能的多维数组对象及处理数组的工具。
在这里插入图片描述
  我们可以使用以下语句导入 Numpy 库

import numpy as np

Numpy数组

在这里插入图片描述


二、创建数组

>>> a = np.array([1,2,3])
>>> b = np.array([(1.5,2,3), (4,5,6)], dtype = float)
>>> c = np.array([[(1.5,2,3), (4,5,6)], [(3,2,1), (4,5,6)]],
dtype = float)

初始化占位符

  以下介绍初始化占位符,主要包括:创建值为0数组、创建值为1数组、创建均匀间隔的数组(步进值)、创建均匀间隔的数组(样本数)、创建常数数组、创建2x2单位矩阵、创建随机值的数组和创建空数组的相关代码实现。

>>> np.zeros((3,4)) # 创建值为0数组
>>> np.ones((2,3,4),dtype=np.int16) # 创建值为1数组
>>> d = np.arange(10,25,5) # 创建均匀间隔的数组(步进值)>>> np.linspace(0,2,9) # 创建均匀间隔的数组(样本数)>>> e = np.full((2,2),7) # 创建常数数组 
>>> f = np.eye(2) # 创建2x2单位矩阵
>>> np.random.random((2,2)) # 创建随机值的数组
>>> np.empty((3,2)) # 创建空数组

三、输入、输出

3.1 保存与载入文本文件

>>> np.loadtxt("myfile.txt")
>>> np.genfromtxt("my_file.csv", delimiter=',')
>>> np.savetxt("myarray.txt", a, delimiter=" ")

3.2 保存与载入磁盘上的文件

>>> np.save('my_array', a)
>>> np.savez('array.npz', a, b)
>>> np.load('my_array.npy')

四、数据类型

  以下介绍数据类型,包括:带符号的64位整数、标准双精度浮点数、显示为128位浮点数的复数、布尔值:True值和False值、Python对象、固定长度字符串、固定长度Unicode

>>> np.int64 # 带符号的64位整数
>>> np.float32 # 标准双精度浮点数
>>> np.complex #显示为128位浮点数的复数
>>> np.bool # 布尔值:True值和False值
>>> np.object # Python对象
>>> np.string_ # 固定长度字符串
>>> np.unicode_ # 固定长度Unicode

五、数组信息

  以下介绍数组信息的查看方法代码实现,包括:数组形状、几行几列、数组长度、几维数组、数组有多少元素、数据类型、数据类型的名字、数据类型转换

>>> a.shape # 数组形状,几行几列
>>> len(a) # 数组长度
>>> b.ndim # 几维数组
>>> e.size # 数组有多少元素
>>> b.dtype # 数据类型
>>> b.dtype.name # 数据类型的名字
>>> b.astype(int) # 数据类型转换

六、调用帮助

>>> np.info(np.ndarray.dtype)

七、数组计算

7.1 算数运算

  以下介绍算数运算相关操作,主要包括:减法、减法另解、加法、加法、除法、除法、乘法、乘法另解、幂、平方根、正弦、余弦、自然对数、点积

# 减法
>>> g = a - b
array([[-0.5, 0. , 0. ],[-3. , -3. , -3. ]])# 减法
>>> np.subtract(a,b)# 加法
>>> b + a
array([[ 2.5, 4. , 6. ],[ 5. , 7. , 9. ]])
>>> np.add(b,a) # 加法# 除法
>>> a / b
array([[ 0.66666667, 1. , 1. ],[ 0.25 , 0.4 , 0.5 ]])
>>> np.divide(a,b) # 除法# 乘法
>>> a * b
array([[ 1.5, 4. , 9. ],[ 4. , 10. , 18. ]])
>>> np.multiply(a,b) # 乘法# 幂
>>> np.exp(b)# 平方根
>>> np.sqrt(b)# 正弦
>>> np.sin(a)# 余弦
>>> np.cos(b)# 自然对数
>>> np.log(a)# 点积
e.dot(f)
array([[ 7., 7.],[ 7., 7.]])

7.2 比较

  以下介绍比较的相关代码实现,主要包括:对比值、对比值另解、对比数组

# 对比值
>>> a == b
array([[False, True, True],[False, False, False]], dtype=bool)# 对比值
>>> a < 2
array([True, False, False], dtype=bool)# 对比数组
>>> np.array_equal(a, b)

7.3 聚集函数

  以下介绍聚集函数的相关代码实现,主要包括:数组汇总、数组最小值、数组最大值(按行操作)、数组元素的累加值、平均数、中位数、相关系数、标准差

>>> a.sum() # 数组汇总
>>> a.min() # 数组最小值
>>> b.max(axis=0) # 数组最大值,按行
>>> b.cumsum(axis=1) # 数组元素的累加值
>>> a.mean() # 平均数
>>> b.median() # 中位数
>>> a.corrcoef() # 相关系数
>>> np.std(b) # 标准差

八、数组复制

  以下介绍数组复制的相关代码实现,主要包括:使用同一数据创建数组视图、创建数组的副本、创建数组的深度拷贝

>>> h = a.view() # 使用同一数据创建数组视图
>>> np.copy(a) # 创建数组的副本
>>> h = a.copy() # 创建数组的深度拷贝

九、数组排序

  以下介绍数组排序的相关操作,主要包括:数组排序、以轴为依据对数组排序

>>> a.sort() # 数组排序
>>> c.sort(axis=0) # 以轴为依据对数组排序

十、子集、切片、索引相关实现

10.1 子集

在这里插入图片描述
  选择索引2对应的值:

>>> a[2]
3

在这里插入图片描述
  选择行1列2对应的值(等同于b[1][2]):

>>> b[1,2]
>6.0

10.2 切片

在这里插入图片描述
  选择索引为0与1对应的值:

>>> a[0:2]
array([1, 2])

在这里插入图片描述
  选择第1列中第0行、第1行的值:

>>> b[0:2,1]
array([ 2., 5.])

在这里插入图片描述
  选择第0行的所有值(等同于b[0:1,:1]:

>>> b[:1]
array([[1.5, 2., 3.]])

  等同于 [1,:,:]:

>>> c[1,...]
array([[[ 3., 2., 1.],[ 4., 5., 6.]]])

  反转数组a:

>>> a[ : :-1]
array([3, 2, 1])

10.3 条件索引

在这里插入图片描述
  选择数组a中所有小于2的值:

>>> a[a<2]
array([1])

10.4 花式索引

  选择(1,0),(0,1),(1,2) 和(0,0)所对应的值:

>>> b[[1, 0, 1, 0],[0, 1, 2, 0]]
array([ 4. , 2. , 6. , 1.5])

  选择矩阵的行列子集:

>>> b[[1, 0, 1, 0]][:,[0,1,2,0]]
array([[4.,5.,6.,4.],[1.5,2.,3.,1.5],[4.,5.,6.,4.] ,[1.5,2.,3.1.5]])

十一、数组操作

11.1 转置数组

>>> i = np.transpose(b) # 转置数组
>>> i.T # 转置数组

11.2 改变数组形状

  以下介绍改变数组形状的相关代码操作,主要包括:数组排序、以轴为依据对数组排序

>>> b.ravel() # 拉平数组
>>> g.reshape(3,-2) # 改变数组形状,但不改变数据

11.3 添加或删除值

  以下介绍添加或删除值的相关代码操作,主要包括:返回形状为(2,6)的新数组、追加数据、插入数据、删除数据

>>> h.resize((2,6)) # 返回形状为(2,6)的新数组
>>> np.append(h,g) # 追加数据
>>> np.insert(a, 1, 5) # 插入数据
>>> np.delete(a,[1]) # 删除数据

11.4 合并数组

  以下介绍合并数组的相关代码实现,主要包括:拼接数组、纵向以行的维度堆叠数组、纵向以行的维度堆叠数组、横向以列的维度堆叠数组、以列的维度创建堆叠数组

# 拼接数组
>>> np.concatenate((a,d),axis=0)
array([ 1, 2, 3, 10, 15, 20])# 纵向以行的维度堆叠数组
>>> np.vstack((a,b))
array([[ 1. , 2. , 3. ],[ 1.5, 2. , 3. ],[ 4. , 5. , 6. ]])# 纵向以行的维度堆叠数组
>>> np.r_[e,f]# 横向以列的维度堆叠数组
>>> np.hstack((e,f))
array([[ 7., 7., 1., 0.],[ 7., 7., 0., 1.]])# 以列的维度创建堆叠数组
>>> np.column_stack((a,d))
array([[ 1, 10],[ 2, 15],[ 3, 20]])# 以列的维度创建堆叠数组
>>> np.c_[a,d]

11.5 分割数组

  以下介绍分割数组的相关代码实现举例,主要包括:纵向分割数组为3等份横向分割数组为2等份

# 纵向分割数组为3等份
>>> np.hsplit(a,3)
[array([1]),array([2]),array([3])]# 横向分割数组为2等份
>>> np.vsplit(c,2)
[array([[[ 1.5, 2. , 1. ],[ 4. , 5. , 6. ]]]),
array([[[ 3., 2., 3.],[ 4., 5., 6.]]])]

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

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

相关文章

【Python】Python元组学习

Python之元组学习记录 一、元组的特点 可以容纳多个数据可以容纳不同类型的数据&#xff08;混装&#xff09;数据是有序存储的&#xff08;下标索引&#xff09;允许重复数据存在不可以修改&#xff08;增加或删除元素等&#xff09;但内部list元素可以被修改支持while&…

深入大B行业,什么是最有力的敲门砖?

引言&#xff1a;2023上半年&#xff0c; 能扛过外部环境各种变化&#xff0c; 这样的科技公司就很不容易了。 【全球云观察 &#xff5c; 热点关注】在当前后疫情时代下&#xff0c;全球经济增长处于的低增长期&#xff0c;这对所有科技企业的发展带来了直接影响。 有业内人…

04什么场景要用到微服务

一句话导读 根据微服务的特点&#xff0c;可以总结为在构建复杂的、大型的、分布式的、高可用、高并发、高性能的应用时可以使用微服务架构。 目录 一句话导读 一、微服务适用场景 1.业务复杂&#xff0c;模块多且相对独立 2.团队多&#xff0c;管理隔离 3.应用规模大&#…

win10 2022unity设置中文

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言解决方法 前言 在Edit->preferences里找不到language选项。 解决方法 【1】打开下面地址 注意 :把{version}换成你当前安装的版本&#xff0c;比如说如果…

SpringBoot第33讲:SpringBoot集成ShardingJDBC - 基于JPA的读写分离

SpringBoot第33讲&#xff1a;SpringBoot集成ShardingJDBC - 基于JPA的读写分离 本文是SpringBoot第33讲&#xff0c;主要介绍分表分库&#xff0c;以及SpringBoot集成基于 ShardingJDBC 的读写分离实践 文章目录 SpringBoot第33讲&#xff1a;SpringBoot集成ShardingJDBC - 基…

天津最新python培训班就业形势 python能就业吗?

小编认为Python是一门非常适合学习的编程语言&#xff0c;无论性别如何。它易于学习、功能强大&#xff0c;并且在各个领域都有广泛的应用&#xff0c;因此&#xff0c;性别不应该成为学习Python的障碍&#xff0c;那么学习Python是否就能找到满意的工作呢&#xff1f; 这是一…

大量删除hdfs历史文件导致全部DataNode心跳汇报超时为死亡状态问题解决

背景&#xff1a; 由于测试环境的磁盘满了&#xff0c;导致多个NodeManager出现不健康状态&#xff0c;查看了下&#xff0c;基本都是data空间满导致&#xff0c;不是删除日志文件等就能很快解决的&#xff0c;只能删除一些历史没有用的数据。于是从大文件列表中&#xff0c;找…

深入理解高并发编程 - 线程的生命周期

1、线程的生命周期 线程的生命周期可以分为以下几个阶段&#xff1a; 新建&#xff08;New&#xff09;&#xff1a;线程对象被创建但尚未启动。这是通过实例化Thread类或其子类来实现的。就绪&#xff08;Runnable&#xff09;&#xff1a;线程对象已经创建&#xff0c;并且…

吃瓜教程-Task05

目录 支持向量机 间隔与支持向量 SVM基本型 对偶问题 kkt条件 例子 对偶问题 例子 对偶问题原理解释 软间隔与正则化 替代损失函数 支持向量回归 例子 支持向量机 间隔与支持向量 在样本空间中&#xff0c;划分超平面可通过如下线性方程来描述: 样本空间中任意点x到…

Android WIFI-系统连接WIFI显示网络连接受限

问题描述 使用Android设备打开设置&#xff0c;选择WIFI输入正确密码连接&#xff0c;会显示已连接&#xff0c;无网络&#xff0c;然后变成网络连接受限&#xff0c;实际可以使用此WIFI进行上网。 问题分析 异常Log D NetworkMonitor/100: PROBE_DNS www.google.com 107ms O…

数据结构【哈夫曼树】

哈夫曼树 哈夫曼树的概念哈夫曼树的构造构造算法的实现哈夫曼树应用哈夫曼编码哈夫曼编码的算法实现 哈夫曼树的概念 最优二叉树也称哈夫曼 (Huffman) 树&#xff0c;是指对于一组带有确定权值的叶子结点&#xff0c;构造的具有最小带权路径长度的二叉树。权值是指一个与特定结…

Redis持久化

Redis 持久化 redis 提供了两种持久化的方式&#xff0c;分别是RDB&#xff08;Redis DataBase&#xff09;和AOF&#xff08;Append Only File&#xff09;。 RDB&#xff0c;简而言之&#xff0c;就是在不同的时间点&#xff0c;将 redis 存储的数据生成快照并存储到磁盘等…

MongoDB文档-进阶使用-spring-boot整合使用MongoDB---MongoTemplate完成增删改查

传送门&#xff1a; MongoDB文档--基本概念_一单成的博客-CSDN博客 MongoDB文档--基本安装-linux安装&#xff08;mongodb环境搭建&#xff09;-docker安装&#xff08;挂载数据卷&#xff09;-以及详细版本对比_一单成的博客-CSDN博客 MongoDB文档--基本安装-linux安装&…

[原创]从强化学习的本质推导到PPO

前言 这篇博客很久之前就想做了&#xff0c;一直在拖是因为觉得自己对知识点理解还没有足够的透彻。但是每当去复盘基本概念的时候又很难理清逻辑&#xff0c;所以觉得即便现在半吊子水平&#xff0c;但是也想通过博客记录一下自己肤浅的学习心得&#xff0c;权当是为自己巩固…

加拿大量子研究新动作!D-Wave与滑铁卢大学合作研究量子相干性

​ &#xff08;图片来源&#xff1a;网络&#xff09; D-Wave是量子计算系统、软件和服务的领导者&#xff0c;也是量子计算机的第一家供应商。近期&#xff0c;D-Wave宣布与滑铁卢大学量子计算研究所&#xff08;IQC&#xff09;达成两项新合作。他们为量子计算系统建立了关键…

C/C++面试经历(一)

目录 1. 说说你对C与C的认识&#xff1f; 2. 说说C的三大特性&#xff1f; 3. 说说C的重载&#xff1f; 4. C语言为什么不支持重载&#xff1f; 5. 说说类的默认成员函数&#xff1f; 6. 类的构造函数为什么不支持虚函数&#xff1f; 7. 说说你对指针和引用的理解&…

【计算机网络】网络层协议 -- ICMP协议

文章目录 1. ICMP协议简介2. ICMP协议格式3. ping命令4. ping命令与端口号没有关系&#xff01;&#xff01;&#xff01;5. traceroute命令 1. ICMP协议简介 ICMP&#xff08;Internet Control Message Protocol&#xff0c;控制报文协议&#xff09;&#xff0c;用于在IP主机…

无代码集成明道云与更多应用连接

明道云是一个APaaS平台&#xff0c;可以帮助用户快速搭建个性化企业应用&#xff0c;用户不需要代码开发就能够搭建出用户体验上佳的销售、运营、人事、采购等核心业务应用&#xff0c;打通企业内部数据&#xff0c;也能够通过API和Webhook和其他系统对接。 场景描述&#xff…

libcurl网络库的函数接口使用

文章目录 1、libcurl简介2、libcurl的使用3、函数简介4、 curl_easy_setopt函数部分选项介绍5、curl_easy_perform 函数说明&#xff08;error 状态码&#xff09;6、简单实例,包含库文件&#xff0c;头文件即可 1、libcurl简介 libcurl是一个跨平台的网络协议库&#xff0c;支…

消息队列(3) -封装数据库的操作

前言 上一篇博客我们写了, 关于交换机, 队列,绑定, 写入数据库的一些建库建表的操作 这一篇博客中,我们将建库建表操作,封装一下实现层一个类来供上层服务的调用 , 并在写完该类之后, 测试代码是否完整 实现封装 在写完上述的接口类 与 xml 后, 我们想要 创建一个类 ,来调用…