NumPy入门(一)

NumPy入门(一)

工具: jupyter notebook

jupyter notebook 功能 :

  1. 数据处理 (python 处理数据功能) coding
  2. 文字型的描述 富文本 word
  3. 可视化支持

官网: https://jupyter.org/

启动命令 jupyter notebook

1.1 numpy简介

Python的拓展库, 提供数据对象 ndarray, 运算速度上快于python中的list

1.2 ndarray 属性

  • ndim: 维度
  • shape: 形状
  • size: 总长度
  • dtype: 元素类型

1.3 创建 ndarray

  1. 创建一个一维数组(其中display可以进行输出)
    在这里插入图片描述
    2 .属性
    arrtwo = np.array([[1,2,3],[4,5,6]])
    # display输出效果
    display(arrtwo)
    '''
    array([[1, 2, 3],[4, 5, 6]])
    '''
    # print 输出效果
    '''
    [[1 2 3]
    [4 5 6]]
    '''
    ######### 属性操作 ##########
    # 获取数组维度
    arrtwo.ndim #  2 二维# 获取数组形状
    arrtwo.shape # (2, 3) 2行3列# size:总长度
    arrtwo.size # 6# dtype:元素类型
    arrtwo.dtype  # dtype:元素类型
    

1.3.1 强制类型统一

numpy设计初衷是用于运算的,所以对数据类型进行统一优化

注意:

  • numpy默认ndarray的所有元素的类型是相同的
  • 如果传进来的列表中包含不同的类型,则统一为同一类型,优先级:str>float>int
    如:
    在这里插入图片描述

1.3.2 numpy 数据类型

名称描述
bool_布尔型数据类型(True 或者 False)
int_默认的整数类型(类似于 C 语言中的 long,int32 或 int64)
intc与 C 的 int 类型一样,一般是 int32 或 int 64
intp用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)
int8字节(-128 to 127)
int16整数(-32768 to 32767)
int32整数(-2147483648 to 2147483647)
int64整数(-9223372036854775808 to 9223372036854775807)
uint8无符号整数(0 to 255)
uint16无符号整数(0 to 65535)
uint32无符号整数(0 to 4294967295)
uint64无符号整数(0 to 18446744073709551615)
float_float64 类型的简写
float16半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位
float32单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位
float64双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位
complex_complex128 类型的简写,即 128 位复数
complex64复数,表示双 32 位浮点数(实数部分和虚数部分)
complex128复数,表示双 64 位浮点数(实数部分和虚数部分)

1.3.3 使用 numpy 的常规函数创建数组

  1. np.ones(shape, dtype=None, order=‘C’), 生成元素都为1

shape: 形状,使用元组表示
在这里插入图片描述

  1. np.zeros(shape=(3,1),dtype=np.uint8), 生成元素都为0的数组, 形状为3行1列
    在这里插入图片描述
  2. np.full(shape=(3,3), fill_value=6) , 生成元素都为一个值,6填满的数组
  3. np.eye(N=3,M=2,k=1)

    N:int型,表示的是输出的行数
    M:int型,可选项,输出的列数,如果没有就默认为N
    k:int型,可选项,对角线的下标,默认为0表示的是主对角线,负数表示的是低对角,正数表示的是高对角。
    在这里插入图片描述

  4. np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) 生成等间距的数组

start, stop 开始结束, num: 生成个数, endpoint 是否包含终点, restep 是否返回步长在这里插入图片描述

  1. np.arange([start, ]stop, [step, ]dtype=None) start, stop 开始结束, step 设置步长, 默认为1

在这里插入图片描述

  1. np.random.randint(low, high=None, size=None, dtype=‘l’) 生成随机整数的一个函数

low (int): 随机整数的下限(包含此值)。
high (int, 默认为 None): 随机整数的上限(不包含此值)。如果未指定,则默认为 low + 1,即生成 [low, low+1) 的区间内的整数。
size (int 或 tuple of ints, 默认为 None): 生成随机整数数组的形状。如果为 None,则返回一个标量整数。如果指定形状,将生成一个具有该形状的多维数组,其中每个元素都是指定范围内的随机整数。
在这里插入图片描述

  1. 正态分布函数
  • np.random.randn(d0, d1, …, dn) 标准正态分布
  • np.random.normal() 普通正态分布

正态分布: 正态曲线呈钟型,两头低,中间高,左右对称因其曲线呈钟形。

  1. np.random.random(size=None) 生成0到1的随机数,左闭右开

  2. np.random.permutation(10) 生成随机索引

  3. 随机种子, 添加种子: np.random.seed(1)
    在这里插入图片描述

1.4 ndarray 读写操作

1.4.1 索引访问

在这里插入图片描述
ndarray 的高维数组访问,使用 [dim1_index, dim2_index…]
在这里插入图片描述

1.4.2 列表访问

  1. 1维数组中使用

生成一个数组的随机排列
ndarray 也可以同时作为 ndarray对象的索引列表
在这里插入图片描述

arr = np.random.randint(1,100, size=10)
display(arr)
# array([95, 24, 64, 26, 64, 21, 92, 62, 56, 70])# 对原数组进行随机排序
arr[indexs] # 随机排列作为索引不会对原数组元素影响, 仅仅对原数据元素位置影响
# array([70, 64, 95, 26, 64, 92, 24, 56, 21, 62])

在这里插入图片描述
2. 高维数组中使
在这里插入图片描述

1.4.3 切片访问

在这里插入图片描述

注意:
adarray 的访问形式:
adarray[dim1_index, dim2_index, … dimn_index]
dim_index支持的形式 :
int [int] 切片 bool列表
其中只返回 True 的值 在这里插入图片描述

1.5 ndarray的级联和切分

1.5.1 级联

级联的注意事项:

  • 级联的参数是列表:一定要加中括号或小括号
  • 维度必须相同
  • 形状相符
  • 级联的方向默认是shape这个tuple的第一个值所代表的维度方向
  • 可通过axis参数改变级联的方向
  • numpy.concatenate是NumPy库中用于连接(拼接)多个数组的函数。它允许您将同一维数的多个数组沿着指定的轴(axis)合并为一个新的单一数组
    在这里插入图片描述
  • np.hstack与np.vstack 函数简化以上concatenate 操作
  • vstack 竖着连
    在这里插入图片描述
  • hstack 横着连
    在这里插入图片描述

1.5.2 切分

与级联类似,三个函数完成切分工作:

  • np.split
  • np.vsplit
  • np.hsplit
  • indices_or_sections int 会按照指定的轴向,讲数组切分成N等分, 要求切分的方向上的长度能被N整除
	a1, a2 = np.split(arr, indices_or_sections=2, axis=0)display(a1, a2)1

输出效果:
在这里插入图片描述

  • indices_or_sections [m,n] 表达的是 按照0:m, m:n, n:的切片逻辑对数组进行拆分 【左闭右开区间】
np.split(arr, indices_or_sections=[2,3], axis=1)

在这里插入图片描述

  • 简化上面函数操作,出现了 vsplit 纵向切,hsplit 横向切

h horizontal 横向
v vertical 纵向

在这里插入图片描述

1.6 ndarray 运算

1.6.1 基本运算原则

  • 两个矩阵运算,就是对应位置的数据的运算, + - * / 等

1.6.2 广播 Broadcast

ndarray广播机制的两条规则
如果

  • 两个数组的后缘维度(trailing dimension,即从末尾开始算起的维度)的轴长度相符
  • 或其中的一方的长度为1

则认为它们是广播兼容的。 广播会在缺失和(或)长度为1的维度上进行。

在这里插入图片描述

1.7 ndarray的聚合操作

1.7.1 求和 sum

  • sum() 求整个数组和
  • sum(axis=0) 求每一行的和
  • sum(axis=1) 求每一列的和

ndarray 中的空值表示:np.nan, nan为float

  • np.sum 和 np.nansum 的区别
    在这里插入图片描述

1.7.1 any() 和 all()

  • any 一个数组中,如果至少存在一个True, any函数就返回True
  • all 一个数组中,如果全都是True, all函数就返回True

1.7.4 常见聚合函数

函数名NaN版本描述
np.sumnp.nansum计算元素总和
np.prodnp.nanprod计算元素的乘积
np.meannp.nanmean计算元素的平均值
np.stdnp.nanstd计算标准差
np.varnp.nanvar计算方差
np.minnp.nanmin查找最小值
np.maxnp.nanmax查找最大值
np.mediannp.nanmedian计算元素中位数
np.percentilenp.nanpercentileCompute rank-based statistics of elements:计算元素的基于秩的统计信息
np.any-Evaluate whether any elements are true
np.all-Evaluate whether all elements are true

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

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

相关文章

【数据下载】SODA数据更新至2022并教学下载

【数据下载】SODA数据更新至2022并教学下载 我为什么那么喜欢使用SODA数据? 就是三维网格化的数据,好用。 但是需要高分辨率还是需要找别的。 以前分享过SODA数据下载,但上次版本过于凌乱。因此重新借助更新再分享一次,不为过。…

人脸识别业务(基于腾讯人脸识别接口)

使用腾讯云人脸识别接口,基于优图祖母模型。 一、准备工作 人脸识别账号 申请腾讯云服务器账号,生成自己的秘钥。记录秘钥和秘钥ID。 创建人员库 记下人员库id 在配置文件application.yml中添加配置。 plateocr:SecretId: 秘钥IDSecretKey: 秘钥ser…

Day1 省选衔接题 思路总结

Day1 省选题 思路 取数 可反悔的贪心。我们开一个双向链表记录此时每个数的前/后一个数是什么。一个简单但不一定正确的贪心策略即为:每次都取走当前值最大的且可取的数,并更新列表。考虑如何使这个贪心思路正确。 设 p r e x pre_x prex​ 表示 x x …

Path Aggregation Network for Instance Segmentation

PANet 摘要1. 引言2.相关工作3.框架 PANet 最初是为 proposal-based 实例分割框架提出来的,mask 是实例的掩码,覆盖了物体包含的所有像素,proposal 在目标检测领域是可能存在目标的区域。在实例分割中,首先利用RPN(Region Proposa…

练习题(2024/4/10)

1. 删除有序数组中的重复项 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元…

2022年蓝桥杯省赛——直线

目录 题目链接:11.直线 - 蓝桥云课 (lanqiao.cn) 题目描述 思路 代码思路如下 代码实现 坑来喽~~ 导致这个BUG的原因!!! 总结 整体的 两种b的情况对比数据 题目链接:11.直线 - 蓝桥云课 (lanqiao.cn) 题目描…

JVM面试整理--对象的创建和堆

文章目录 对象的创建过程是怎样的?对象在内存中的结构是怎样的(专业的叫法:对象的内存布局)对象在内存分配时使用的哪种方式(有的地方也称为:分配算法)知道什么是“指针碰撞”吗?知道什么是“空…

LeetCode 80—— 删除有序数组中的重复项 II

阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 让 index指向删除重复元素后数组的新长度;让 st_idx 指向重复元素的起始位置,而 i 指向重复元素的结束位置,duplicate_num代表重复元素的个数;一段重复元素结束后&am…

php校园活动报名系统vue+mysql

开发语言:php 后端框架:Thinkphp/Laravel 前端框架:vue.js 服务器:apache 数据库:mysql 运行环境:phpstudy/wamp/xammp等本选题则旨在通过标签分类管理等方式,管理员;首页、个人中心、学生管理、…

Redis 缓存穿透、缓存击穿、缓存雪崩区别和解决方案

缓存穿透 什么是缓存穿透? 缓存穿透说简单点就是大量请求的 key 是不合理的,根本不存在于缓存中,也不存在于数据库中 。这就导致这些请求直接到了数据库上,根本没有经过缓存这一层,对数据库造成了巨大的压力&#xf…

2、Qt UI控件 -- qucsdk项目使用

前言:上一篇文章讲了qucsdk的环境部署,可以在QDesigner和Qt Creator中看到qucsdk控件,这一篇来讲下在项目中使用qucsdk库中的控件。 一、准备材料 要想使用第三方库,需要三个先决条件, 1、控件的头文件 2、动/静态链…

记录vue之npm run serve报错SET NODE_OPTIONS

> vue-antd-pro3.0.0 serve > SET NODE_OPTIONS--openssl-legacy-provider && vue-cli-service servesh: SET: command not found 一定要注意:将 SET NODE_OPTIONS–openssl-legacy-provider && 删除即可

17 - Games101 - 笔记 - 材质与外观

**17 **材质与外观 材质与BRDF 自然界中的材质:丝绸、头发、蝴蝶翅膀表面、寿司表面等等 图形学中的材质:同一个模型之所以渲染出不同结果的原因就是因为材质。在图形学中是给不同的物体指定不同的材质,知道它们如何和光线作用后就能正确的…

C++11 数据结构0 什么是 “数据结构“?数据,数据对象,数据元素,数据项 概念。算法的基本概念 和 算法的度量,大O表示法,空间换时间的代码

数据: 是能输入计算机且能被计算机处理的各种符号的集合。数值型的数据:整数和实数。非数值型的数据:文字、图像、图形、声音等。 数据对象: 性质相同的 "数据元素" 的集合 例如一个 int arr[10], Teacher tea[3]; 数…

汽车4S行业的信息化特点与BI建设挑战

汽车行业也是一个非常大的行业,上下游非常广,像主机厂,上游的零配件,下游的汽车流通,汽车流通之后的汽车后市场,整个链条比较长。今天主要讲的是汽车流通,汽车4S集团。一个汽车4S集团下面授权代…

MySQL高级篇(存储引擎InnoDB、MyISAM、Memory)

目录 1、存储引擎简介 1.1、查询建表语句,默认存储引擎:InnoDB 1.2、查看当前数据库支持的存储引擎 1.3、创建表,并指定存储引擎 2、 存储引擎-InnoDB介绍 2.1、存储引擎特点 3、MyISAM存储引擎 4、Memory存储引擎 5、InnoDB、MyISAM、Memory…

HTML基础(3)

1、内联框架 iframe用于在网页内显示网页&#xff0c;语法如下&#xff1a; <iframe src"URL"></iframe> URL指向隔离页面 hight&#xff0c;weight设置高宽&#xff0c;删除边框将frameborder设置为0 <td> <iframe frameborder"0&qu…

麒麟v10安装mysql-8.0.35

因为要修复漏洞的原因&#xff0c;这两天将麒麟v10操作系统的服务器上的MySQL版本由5.7.27升级到8.0.35&#xff08;mysql安装包下载地址&#xff1a;MySQL :: Download MySQL Community Server (Archived Versions)&#xff09;&#xff0c;mysql的安装过程主要参考了这个博主…

JavaScript-throw、try,2024年前端高级面试题总结

提交电话 二、xml初识 xml文件是用来做什么的 核心思想&#xff1a; 答&#xff1a;存储数据 延伸问题&#xff1a; xml是怎样存储数据的&#xff1f; 答&#xff1a;以标签的形式存储 例: coco 什么是xml元素? 元素该如何编写? xml中的元素其实就是一个个的标签 标签…

面试官为什么喜欢考察Vue底层原理

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…