Python基础系列2——Numpy数值计算及分析

2023-11-11

1、实验内容:

(1) numpy数组的建立、索引、计算、统计等。
(2) 利用numpy对数据集“iris.data”进行分析。

2、实验过程:

2.1 numpy数组的建立、索引、计算、统计等

(1)numpy数组分析
①查看版本信息
在这里插入图片描述

②数组属性

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2) numpy数组的建立

①有规则数组:
Ⅰ、arange(起点,终点,步长) 起点与终点可省,步长不可省
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Ⅱ、np.linspace(起点,终点,等分数)
结果是左闭右闭的区间,即起点与终点都可以取到
在这里插入图片描述

Ⅲ、数组数据类型的转变
在这里插入图片描述
在这里插入图片描述

②无规则(随机)数组
Ⅰ、创建无约束随机数组
在这里插入图片描述

Ⅱ、创建均匀分布随机数组:每一段出现的概率均等
在这里插入图片描述

Ⅲ、正态分布随机数组
在这里插入图片描述

Ⅳ、均匀分布与正态分布的二维数组
在这里插入图片描述

Ⅴ、randint:产生随机整数。randint(起点,终点,size)
在这里插入图片描述

Ⅵ、shuffle:打乱顺序;reshape:改变形状。
在这里插入图片描述
在这里插入图片描述

③全0数组
在这里插入图片描述

④全1数组
在这里插入图片描述在这里插入图片描述

⑤创建主对角线是1,其余为0的矩阵
在这里插入图片描述

⑥概率划分(抽奖问题)
random.choice(整数或序列,size,p)
一般不给定p,此时默认为等概率划分

在这里插入图片描述
在这里插入图片描述

(3) numpy数组的索引
①简单索引分析
在这里插入图片描述
在这里插入图片描述

②根据索引,挑选一维数组中符合要求的数
在这里插入图片描述

③根据索引,挑选二维数组中符合要求的数
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

④替换指定值
在这里插入图片描述

⑤改变数组的形状
在这里插入图片描述

⑥多维数组的展平
在这里插入图片描述
在这里插入图片描述

(4) numpy数组的计算

①相同形状数组的运算

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

②列表不能加减数字
在这里插入图片描述

③不同形状的数组不能相加减乘除
在这里插入图片描述

④特征计算
在这里插入图片描述
在这里插入图片描述

⑤简单统计
在这里插入图片描述

(5)numpy数组的统计
①删除带有空值的行
在这里插入图片描述

②列均值替代nan,如果整列是nan,则删除该列
在这里插入图片描述

2.2 利用numpy对数据集“iris.data”进行分析

Numpy综合练习:鸢尾花数据集分析(题目)
Tip——样本标准化:(真实值-最小值)/(最大值-最小值)【极差】
任务一:
①读出数据,计算四列数据中任一列的平均值、中位值、标准差、并将其标准化(将其值转为0~1范围内的标准值)

#读出数据,将第0列花萼长度放入数组len中
import numpy as np
iris=np.loadtxt("D:/python_files/iris-20.data",delimiter=',',dtype='object')
len=iris[:,0]       #读出0列,花萼长度
len=np.float64(len) #强制类型转换,转化为浮点数
#计算花萼长度的均值,中位值,标准差
means=np.mean(len)
len_std=(len-len.min())/(len.max()-len.min()) #样本标准化
len_std=np.round(len_std,2) #round表示四舍五入,2表示小数精度
#计算标准化数据,将数据插入到原数组
iris=np.insert(iris,4,len_std,axis=1)#20个数据--20--维度为1

②以某列为主关键字,对数组排序

#2.以刚插入的标准值(第4列)为关键字,按列排序 
#以新增列为关键字,对数组排序
seq=np.argsort(iris[:,4])
iris[seq]
#写文件
np.savetxt("D:/python_files/temp.txt",iris[seq],fmt="%s")

在这里插入图片描述

任务二:
①筛选满足条件的行:花萼长度>6cm且花瓣长度>5cm的(统计出0列>6.0 3列>5.0的行)

arr=np.loadtxt("D:/python_files/iris-150.data",delimiter=',',dtype="object")
a=arr[:,[0,2]]
a=np.float64(a)
index1=a[:,0]>6
index2=a[:,1]>5
index=index1&index2
print(arr[index])

在这里插入图片描述

②若原始数据中有空值,删除带有空值的行

#制造10个随机空值,放入数组,删除带有空值的行
a=np.loadtxt("D:/python_files/iris-20.data",delimiter=',',usecols=[0,1,2,3])
#print(iris)
rows,cols=a.shape
np.random.seed(5)
i=np.random.randint(0,rows,10)
j=np.random.randint(0,cols,10)
a[i,j]=np.nan
index=np.isnan(a)
nanrows=np.any(index,axis=1)
b=a[~nanrows]
print(b)

在这里插入图片描述

3、实验结论及注意事项

(1) np.linspace与np.arange 的区别:
①np.linspace (起点,终点,等分数)
结果是左闭右闭的区间,即起点与终点都可以取到;
②np.arange(起点,终点,步长)
是左闭右开的区间,即起点可以取到,终点不能取到。
(2) “?+名词”查看属性,例如:
?np.ones
?np.random.random
(3) 均匀分布与正态分布的平均值,分别接近于0.5与0
①均匀分布平均值计算方法:
a = np.random.rand(10000)
print(a.mean())
②正态分布的平均值计算方法:
b = np.random.randn(10000)
print(b.mean())
(4) shuffle:只打乱最高维度
对于a=np.arange(60).reshape(5,3,4),表示将一维数组形状转变为三维数组,且三维数组为3行4列的5个面,如果再次基础上通过shuffle打乱,只能将最高维度——面维度打乱。若要将元素出场顺序全部打乱,可采取方法:先shuffle,再reshape,例如:
a=np.arange(12)
np.random.shuffle(a)
a=a.reshape(3,4)
print(a)
(5)在多维数组的展平中flatten不能改变原始数组,应写成a=a.flatten()。
(6) “delimiter=‘,’”:原始文件是用逗号分隔的,所以需要指定分隔符为逗号。
(7)dtype='object’中object表示混合类型,原始数据中最后一列有字符,所以应写为:object。
(8)实验心得:本次实验学习了关于Numpy库的数值计算及分析,主要掌握了Numpy数组属性、索引方法以及相关数组运算,明白了如何创建各种类型数组、如何转换数组类型,在动手实践中发现问题、解决问题,使我受益颇多。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python基础系列2——Numpy数值计算及分析 的相关文章

随机推荐

  • MiniGUI 自定义控件教程7

    接着上次的教程继续 这次给大家介绍的是界面美观的进度条控件 它功能上和MiniGUI原有的进度条控件 CTRL PROGRESSBAR 是一样的 其实进度条也就是那些功能 哪还能整出别点什么花样哦 一 功能确定 1 要具有MiniGUI原有
  • ORACLE等待事件类型【Classes of Wait Events】

    每一个等待事件都属于某一类 下面给出了每一类等待事件的描述 Every wait event belongs to a class of wait event The following list describes each of the
  • 深入理解字节对齐

    C语言 字节对齐 基础知识了解 一 操作系统位数 CPU位数 指令集 1 操作系统 32 bit x86 和64 bit x64 1 位数 2 64 bit 2 处理器CPU位数 3 CPU指令集 4 寄存器 5 关系 6 计算机字长 机器
  • 百度智能云X英伟达直播实录超级AI计算机X-MAN技术

    GPU进入数据中心约有8 10年 这些年内 GPU显存的容量 GPU P2P带宽 GPU性能都在不断提升 据不完全统计 每年GPU显存大约有一倍的变化 P2P带宽有1 5倍到2倍的变化 而且性能变化更多 由于性能的变化 会引起GPU功耗的变
  • Android中解决第三方库重复引用的问题

    如果app中引入了一个新的第三方库 并且这个新库中引入了原本已经引入的另一个库 结果导致重复引用 编译就会报错 如何解决呢 方法是使用exclude排除重复的库 举例 假设新引入的第三方库是 com xiboliya mylib netto
  • JAVA中的类

    一 什么是类 概念 类就是某些具备某些共同特征的实体的集合 它是一种抽象的数据类型 它是对所具有相同特征实体的抽象 在面向对象的程序设计语言中 类是对一类 事物 的属性与行为的抽象 类可以理解为一个模板 它描述一类对象的行为和状态 举个例子
  • 【Linux安全】chattr命令锁定账户敏感文件

    有时候你发现用root权限都不能修改某个文件 大部分原因是曾经用chattr命令锁定该文件了 chattr命令的作用很大 其中一些功能是由Linux内核版本来支持的 不过现在生产绝大部分跑的linux系统都是2 6以上内核了 通过chatt
  • jQuery 入门教程(9):终止动画

    jQuery的使用stop 方法在动画结束之前停止动画 基本语法如下 selector stop stopAll goToEnd 可选参数stopAll 指明是否同时清除 动画队列 缺省为false 意味着只停止当前活动的动画 之后的动画则
  • retrofit合理的处理response

    OKHttp retrofit 有时候使用起来确实会受到一些局限 比如 处理response的加解密 处理response的返回的字段与本地封装的不一样 又不能改本地的字段 所以需要对返回的JSON进一步处理 别名的方式 处理respons
  • 【mysql】云服务器被攻击,数据库以及数据都被删除如何通过binlog日志恢复

    前言 小编买了一台阿里云服务器 然后通过docker 部署了mysql 然后用了一段时间突然发现数据都没有了 然后就排查问题 发现是被攻击了 如下图 you must pay 0 26BTC 怒了 好多钱呢 如果有同样的问题 可以参考此博客
  • MFC实现socket网络通信--主机与服务器之间传送数据

    MFC实现socket网络通信 模拟主机与服务器之间传送数据 MFC实现socket网络通信 1 新建MFC应用程序 2 创建服务端窗口界面 3 写服务器代码 4 创建客户端窗口界面 5 客户端代码部分 6 开始调试 7 小结 MFC实现s
  • smallworld bm 配为ldap授权后授权界面中无法显示设计权限,需要修改config_local_and_ldap.xml配置文件

    config local and ldap xml配置文件增加相应配置
  • Sequel Pro导出关系图,可视化你的数据库

    教程链接 https nicolaswidart com blog exporting relations diagram from sequel pro 简易步骤 使用homebrew安装 brew install graphviz Se
  • 【网络通信】Netty面试专题之十大考问

    1 BIO NIO 和 AIO 的区别 BIO 一个连接一个线程 客户端有连接请求时服务器端就需要启动一个线程进行处理 线程开销大 伪异步 IO 将请求连接放入线程池 一对多 但线程还是很宝贵的资源 NIO 一个请求一个线程 但客户端发送的
  • 你知道this.$options吗?(Vue)

    题记 我们在Vue项目中会有很多情况下需要用到this options 所以接下来我们介绍几个场景会用到 options 我们想第一个问题当我们在template经常使用filter 那么你可以直接在methods里边用过滤器吗 我们在表单
  • GC 的三种基本实现方式

    GC 的三种基本实现方式 参考资料 代码的未来 作者 日 松本行弘 由于并非本人原著 我只是个 搬运工 SO 未经本人允许请尽情转载 另外个人像说明一下这里所说的GC指泛指垃圾回收机制 而单指Java或其他某种特定语言中的GC 可能具体语言
  • 【PTA】7-6 整除光棍

    7 6 整除光棍 这里所谓的 光棍 并不是指单身汪啦 说的是全部由1组成的数字 比如1 11 111 1111等 传说任何一个光棍都能被一个不以5结尾的奇数整除 比如 111111就可以被13整除 现在 你的程序要读入一个整数x 这个整数一
  • 设计模式-day02

    4 创建型模式 4 2 工厂模式 4 2 1 概述 需求 设计一个咖啡店点餐系统 设计一个咖啡类 Coffee 并定义其两个子类 美式咖啡 AmericanCoffee 和拿铁咖啡 LatteCoffee 再设计一个咖啡店类 CoffeeS
  • Ubuntu虚拟机和Windows实现文件拖拽复制粘贴

    方法 安装vm tools 1 在Ubuntu内部鼠标右键打开终端 2 更新apt get 一般新装的系统都需要更新apt get sudo apt get update ps 若无法更新 可以试着换一下镜像站 Ubuntu系统配置镜像站
  • Python基础系列2——Numpy数值计算及分析

    文章目录 1 实验内容 2 实验过程 2 1 numpy数组的建立 索引 计算 统计等 2 2 利用numpy对数据集 iris data 进行分析 3 实验结论及注意事项 1 实验内容 1 numpy数组的建立 索引 计算 统计等 2 利