【2】Anaconda基本命令以及相关工具:jupyter、numpy、Matplotilb

news2024/11/19 18:27:47

上一篇请移步【1】Anaconda基本命令以及相关工具:jupyter、numpy、Matplotilb_水w的博客-CSDN博客

目录

3 Numpy数组基础索引:索引和切片

◼ 基础索引

4 Numpy非常重要的数组合并与拆分操作

◼ 数组的合并-concatenate、vstack、hstack

numpy.vstack(tup)

numpy.hstack(tup)

◼ 数组的拆分-split、vsplit、hsplit

5 Numpy数组的矩阵运算

◼ Numpy的矩阵运算有何不同

◼ 一元运算

◼ 二元运算

◼ 矩阵运算

6 Numpy数组的统计运算

7 Numpy数组arg运算和排序

◼ 最大值 最小值

◼ 排序

8 Numpy数组神奇索引和布尔索引

◼ 神奇索引

◼ 布尔索引


3 Numpy数组基础索引:索引和切片

  • numpy的切片操作,一般结构如num[a:b,c:d],分析时以逗号为分隔符,
  • 逗号之前为要取的num行的下标范围(a到b-1),逗号之后为要取的num列的下标范围(c到d-1);
  • 前面是行索引,后面是列索引。
  • 如果是这种num[:b,c:d],a的值未指定,那么a为最小值0;
  • 如果是这种num[a:,c:d],b的值未指定,那么b为最大值;c、d的情况同理可得。

◼ 基础索引

(1)对于一维数组

# 索引
a[0]   # 取a中的第1个元素

a[4]   # 取a中的第5个元素

a[-1]   # 取a中的最后1个元素


# 切片
a[0:5]   # 取a中的第1~5个元素
a[:5]  

a[4:]   # 取a中的第5个一直到最后的所有元素

a[-3:]   # 取a中的从倒数第3个开始一直到最后的所有元素

a[:]   # 取a中的所有元素

a[::2]   # 取a中的所有元素,间隔步长为2

a[::-1]   # 倒序取a中的所有元素

(2)对于二维数组

A[0,0]   # 取A中的第1行1列的元素

A[0,:]   # 取A中的第1行的所有元素
A[0]

A[-1]   # 取A中的最后1行的所有元素


A[:,0]   # 取A中的第1列的所有元素
A[:,-1]   # 取A中的最后1列的所有元素  

A[:2,:4]   # 取A中的前2行前4列的所有元素

A[::-1,::-1]   # 取A中所有行和列倒序的所有元素

在numpy使用切片的时候要注意,numpy切片的值修改会导致原数组的值也会修改

X = A[:2,:3]    # 与原数组A有了关联关系
X[0,0] = 666
X
A

# 输出结果:
array([[666,   1,   2],
       [  5,   6,   7]])
array([[666,   1,   2,   3,   4],
       [  5,   6,   7,   8,   9],
       [ 10,  11,  12,  13,  14],
       [ 15,  16,  17,  18,  19]])

如果想避免这种情况,我们可以使用copy() 。

X = A[:2,:3].copy()    # 相当于复制了一个新的数组,与原数组A没有了关联关系
X[0,0] = 666
X
A

# 输出结果:
array([[666,   1,   2],
       [  5,   6,   7]])
array([[0,   1,   2,   3,   4],
       [  5,   6,   7,   8,   9],
       [ 10,  11,  12,  13,  14],
       [ 15,  16,  17,  18,  19]])

4 Numpy非常重要的数组合并与拆分操作

◼ 数组的合并-concatenate、vstack、hstack

numpy.concatenate((a1, a2, ...), axis=0, out=None, dtype=None, casting="same_kind")

参数:

  • a1, a2, ...:sequence of array_like,除了将被对应的轴之外,数组必须是相同的形状;
  • axis:int, optional,将被组合的轴,默认为0,如果为None,将被展开为一维数组;
  • out:ndarray, optional,如果给定,将存放结果,尺寸必须匹配;
  • dtype:str or dtype,给定输出的数据类型,不能和参数 out 一起出现;
  • casting:{‘no’, ‘equiv’, ‘safe’, ‘same_kind’, ‘unsafe’}, optional,控制可能发生的数据转换类型。默认为 ‘same_kind’

结果: res是组合后的数组;

(1)合并X和a的时候,需要先让X和a有相同的维度,

np.concatenate((X,a.reshape(1,4)))

 这时的X和a本身是没有任何改变的。

(2)如果想得到合并值的数组,只需要把合并结果赋值给变量,

numpy.vstack(tup)

参数:

  • tup:sequence of arrays,数组除第一维外,形状相同;

结果:

  • stacked:ndarray,竖直(行)顺序堆叠数组,将给定的数组连接的数组;

numpy.hstack(tup)

参数:

  • tup:sequence of arrays,数组除第二维外,形状相同;

结果:

  • stacked:ndarray,水平(按列)顺序堆叠数组,将给定的数组连接的数组;

与np.concatenate((X,B),axis=1)的功能是相同的,

 

◼ 数组的拆分-split、vsplit、hsplit

numpy.split(ary, indices_or_sections, axis=0)

参数:

  • ary:ndarray,被划分的数组;
  • indices_or_sections:int or 1-D array,如果是 int,将被划分为N个对应维度等长的数组,如果是 1-D array,表示数组的拆分位置;
  • axis:int, optional,拆分的维度,默认0;

返回:

  • sub-arrays:list of ndarrays,数组 ary 的子数组视图的列表;

(1)把数组X的最后一行的元素拆分出来,

(2)把数组X的最后一列的元素拆分出来,

numpy.vsplit(ary, indices_or_sections)

参数:

  • ary:ndarray,被划分的数组;
  • indices_or_sections:int or 1-D array,如果是 int,将被划分为N个对应维度等长的数组,如果是 1-D array,表示数组的拆分位置;

返回:

  • sub-arrays:list of ndarrays,竖直方向上的拆分(拆分成上下的几个数组), 数组 ary 的子数组视图的列表;

numpy.hsplit(ary, indices_or_sections)

参数:

  • ary:ndarray,被划分的数组;
  • indices_or_sections:int or 1-D array,如果是 int,将被划分为N个对应维度等长的数组,如果是 1-D array,表示数组的拆分位置;

返回:

  • sub-arrays:list of ndarrays,水平方向上的拆分(拆分成左右的几个数组), 数组 ary 的子数组视图的列表;

 

5 Numpy数组的矩阵运算

◼ Numpy的矩阵运算有何不同

(1)普通数组的矩阵运算不能直接乘以2和两个X相加,需要遍历X,将每个元素乘以2,

(2)而在numpy数组的矩阵运算中,可以直接乘以2,

◼ 一元运算

  • np.abs(a) 、np.fabs(a) : 取各元素的绝对值;
  • np.sign(a) : 计算各元素的符号值 1(+),0,-1(-);
  • np.sqrt(a) : 计算各元素的平方根;
  • np.square(a): 计算各元素的平方;
  • np.log(a) 、np.log10(a) 、np.log2(a) : 计算各元素的以自然对数e、10、2为底的对数np.exp(a) : 计算各元素的指数运算;
  • np.ceil(a) 、np.floor(a) : 计算各元素的ceiling 值, floor值(ceiling向上取整,floor向下取整);
  • np.round(a) : 各元素四舍五入,奇进偶不进(1.5进为2,但2.5不进);
  • np.sin(a)、np.cos(a)、np.tan(a):三角函数;
  • np.modf(a) : 将数组各元素的小数和整数部分以两个独立数组形式返回;

◼ 二元运算

  •  +、-、/、*
  • //:整除;
  • %:取余;
  • **:幂运算;

◼ 矩阵运算

  •  +、-、/、*:相加、相减、相除、不是真正意义上的相乘
  • dot():真正意义上的相乘;
  • .T、transpose():转置;
  • linspace():;
  • ():;

(1) 

(2)定义的数组Z是1x2,但是数组X为2x2,此时竟然可以进行矩阵运算,

虽然numpy可以智能的通过广播的这种形式来进行运算,但事实上并不推荐,因为容易引起混乱。在矩阵运算的过程中,我们尽量还是遵从运算的规律。

(3)逆矩阵

注意:求矩阵的逆时,必须得是方阵,否则会报错,

(4)特征值和特征向量

np.linalg.det(X)
np.linalg.eig(X)

 

6 Numpy数组的统计运算

NumPy内置了很多计算方法,其中最重要的统计方法及说明具体如下。

  • sum(X, axis=1/0):计算矩阵元素的和;矩阵的计算结果为一个一维数组,需要指定行或者列;
    • axis传入0:按列求;
    • axis传入1:按行求;
  • mean(X, axis=1/0):计算矩阵元素的平均值;矩阵的计算结果为一个一维数组,需要指定行或者列求平均值;
  • max(X, axis=1/0):计算矩阵元素的最大值;矩阵的计算结果为一个一维数组,需要指定行或者列求最大值;
  • min(X, axis=1/0):计算矩阵元素的最小值;矩阵的计算结果为一个一维数组,需要指定行或者列求最小值;
  • mean():计算矩阵元素的平均值;
  • median():计算矩阵元素的中位数;
  • std()、var():求标准差、方差;
  • ptp():描述矩阵中最大元素和最小元素之间的差;
  • percentile():可以求任意位置的百分位数;
  • cumsum(X, axis=1/0):按行或列统计,求矩阵的累加;
  • diff(X, axis=1/0):按行或列统计,计算相邻的差;
  • prod(X, axis=1/0):按行或列统计,求矩阵的累积;

需要注意的是,用于这些统计方法的数值类型必须是int或者float。

 numpy不只是功能强大,还有一些常用的统计函数:

 

 

7 Numpy数组arg运算和排序

Numpy数组arg运算和排序:

  • np. argmin() :最小值索引;
  • np.argmax() :最大值索引;
  • np. argwhere(x>0.5)指定条件索引,得到值大于0.5的所有索引的位置,可通过x[ind]取出对应的值;
  • np.random.shuffle()  :打乱顺序;
  • np.sort() 排序:默认以最高维数为单元将x重新排序,不改变x本身的值,而是将排序的结果放到了一个新的数组中
    • x.sort() 排序:改变x本身的值;
    • x[::-1]降序排序;
  • np. argsort(X, axis=1/0) 排序索引:返回从小到大的索引排序;
    • axis传入0:按列;
    • axis传入1:按行;
  • np. partition(x,5) 指定位置分割:将x分割成小于5和大于5在左右两侧,此处的5是指有序数组情况下的第5个元素;
  • np.argpartition(x,5) 分割索引:返回小于5和大于5对应值的索引值;

◼ 最大值 最小值

◼ 排序

(1)

#1.创建一个随机数组x
x = np.arange(10)
x
#结果:array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
 
#2.将x顺序打乱,且x本身值改变
np.random.shuffle(x)
x
#结果:array([1, 6, 3, 5, 4, 0, 2, 7, 8, 9])
 
#3.将x重新排序,不改变x本身的值
np.sort(x)
#结果:array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
x
#结果:array([1, 6, 3, 5, 4, 0, 2, 7, 8, 9])
 
#4.直接使用x.sort()排序,改变x本身的值
x.sort()
x
#结果:array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

(2)使用索引,

(3)某些情况下,我们不需要对数组全部排序,我们可以对索引进行切片操作:

np. partition(x,5) 指定位置分割:将x分割成小于5和大于5在左右两侧,此处的5是指有序数组情况下的第5个元素;

np.argpartition(x,5) 分割索引:返回小于5和大于5对应值的索引值;

(3)如果是高维数组,np.sort() 排序是默认以最高维数进行排序的,

 

8 Numpy数组神奇索引和布尔索引

◼ 神奇索引

import numpy as np
x = np.arange(10)    # 取0~9的10个整数组成数组
x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

x[2:8]    # 对数组x切片截取2~8的一个子数组
array([2, 3, 4, 5, 6, 7])

x[2:8:2]    # 对数组x切片截取2~8的一个子数组,且步长为2
array([2, 4, 6])

[x[2],x[5],x[8]]    # 取第2,5,8三个位置的元素作为数组
[2, 5, 8]

index = [2,5,8]    # 更简洁的方法---神奇索引:取第2,5,8三个位置的元素作为数组
x[index]    
array([2, 5, 8])

index = np.array([[1,3,5],[2,4,6]])    # 更简洁的方法---神奇索引:取第1,3,5和2,4,6位置的元素作为二维数组
x[index]   
array([[1, 3, 5],
       [2, 4, 6]])

神奇索引用于二维数组的情况:

X = x.reshape(2,-1)    # 把x重构成2x5的一个二维数组
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])

row = np.array([0,1,0])    # 构建索引,row表示行坐标,clo表示列坐标
col = np.array([0,2,4])
X[row,col]    # 把row和col都传给X
array([0, 7, 4])    # 输出了3个数字:0行0列,1行2列,0行4列的三个位置的元素

X[0,col]    # 都从第0行取值:取0行0列,0行2列,0行4列的三个位置的元素
array([0, 2, 4])

X[row,:2]    # 从前2列取值:取0行前2列,1行前2列,0行前2列的三个位置的元素
array([[0, 1],
       [5, 6],
       [0, 1]])

col = [True, False, True, False, True]    # 还支持传递布尔类型的数组
X[0,col]    #  都从第0行取值:取0行0列,0行2列,0行4列的三个位置的元素
array([0, 2, 4])    # 输出这三个True对应的元素

◼ 布尔索引

(1)如何得到布尔类型的数组呢?我们可以通过“比较”,

(2)比较结果和神奇索引的同时使用,

 我们还可以找到数组X中所有的偶数,

(3)比较的更多应用,

对于一维数组,

  • np.count_nonzero(x<5):返回x<5的布尔数组中非0元素的个数;
  • np.sum(x<5):返回x<5的布尔数组的求和结果;
  • np.any(x<0):求数组中是否有小于0的数;
  • np.all(x>0):求数组中的元素是否都是小于0;

对于二维数组,

  • np.sum(X%2==0, axis=1/0):统计每一行/列有多少个元素是偶数;
  • np.all(X>2, axis=1/0):统计每一行/列的元素是不是都大于2;

(2)对于多个条件的组合使用:与& 、或| 、非~

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

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

相关文章

生产制造管理:供应商管理系统

随着经济全球化和信息技术的快速推进发展&#xff0c;传统的管理模式早已不再适应现代市场竞争与生产制造的需要&#xff0c;以顾客需求为中心的供应链管理显得更为重要。供应链是围绕核心企业&#xff0c;通过对信息流、物流、资金流等关键部分的控制连成一个整体的功能网链结…

期末前端web大作业——我的家乡陕西介绍网页制作源码HTML+CSS+JavaScript

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

[附源码]计算机毕业设计JAVA科院垃圾分类系统

[附源码]计算机毕业设计JAVA科院垃圾分类系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybati…

Flutter For Web——一个简单的图片素材网站

一个简单的图片素材网站效果视频登录注册页效果图UI初始化TabBarPageView组合登录账号输入按键处理SharedPreferences封装保存数据取出数据清除缓冲内容搜索栏效果图UI首页效果图UIDio网络请求Dio单例封装构造Dio对象GetPostResponse使用解析Json图片阅览UIDialog下载UI调用浏览…

Spring之IOC 为什么能解耦

1.1 什么是IOC &#xff08;1&#xff09;控制反转&#xff0c;把对象的创建和对象之间的调用过程&#xff0c;都交给Spring进行管理 &#xff08;2&#xff09;使用IOC目的&#xff1a;为了耦合性降低 1.2 IOC的底层原理 &#xff08;1&#xff09;使用的技术&#xff1a;…

完美解决-RuntimeError: CUDA error: device-side assert triggered

网上的解决方案意思是对的&#xff0c;但并没有给出相应的实际解决方法&#xff1a; 问题描述&#xff1a; 当使用ImageFolder方式构建数据集的时候&#xff1a; train_data torchvision.datasets.ImageFolder(train_path, transformtrain_transform)train_loader DataLoad…

学习Git看这一篇就够了

文章目录Git简单介绍官方网址Git是什么版本控制系统的演化Git安装 - Windows版需要熟悉的几个Linux命令Git命令行状态对应目录位置Git命令1. git init2. git status3. git add4. git commit5. git config6. git reset7. git diff练习 - 创建学生管理系统练习提交代码练习修改代…

传感模块:MATEKSYS Optical Flow LIDAR 3901-L0X

传感模块&#xff1a;MATEKSYS Optical Flow & LIDAR 3901-L0X1. 模块介绍2. 规格参数3. 使用方法Step1: 接线方式Step2: 安装方式Step3: 使用范围4. 存在问题4.1 MATEKSYS 3901-L0X 输出协议格式&#xff1f;4.1.1 支持光流计协议(iNav-CXOF)4.1.2 支持光流计激光测距协议…

混合SDN中的安全性问题研究

混合SDN中的安全性问题研究混合SDN中的安全性问题研究1.学习目标2.学习内容3.目前存在的问题4.解决办法1.关于欺骗ARP的讨论2.DDoS攻击探讨5.解决方案现有文献的解决方案6.目前面临的挑战申明&#xff1a; 未经许可&#xff0c;禁止以任何形式转载&#xff0c;若要引用&#xf…

美食杰项目(一)登录注册页

目录前言&#xff1a;具体效果&#xff1a;代码思路相应的组件&#xff1a;具体代码&#xff1a;all页面的具体代码&#xff1a;login页面具体代码&#xff1a;**登录和注册的基本功能都一样所以没有注释**enroll页面的具体代码&#xff1a;路由相关代码&#xff1a;相关引入&a…

Swagger2依赖的版本问题导致其配置文件一直报错的终极解决方案

Swagger2依赖的版本问题 在项目中使用的报错的版本 springboot2.2.1.RELEASE swagger2.9.2导致在写swagger的配置类时&#xff0c;一直引入不了依赖 导入正确的依赖 <!--swagger--> <dependency><groupId>io.springfox</groupId><artifactId>sp…

JIRA on K8s helm部署实战

JIRA on K8s helm部署实战jira on k8s实战waht&#xff1f;架构![在这里插入图片描述](https://img-blog.csdnimg.cn/7b007d9bfb4648c7b1ab816105f51701.png)如何选择chart官方的chartmox 的chart【1】mox chart 安装脚本【2】生产环境的yamljira 的sharedHome 和localHome 的区…

spring源码 - @Condition原理及运用

1.在源码中&#xff0c;在生成beanfinition中有有如一段代码 以下代码逻辑中执行this.conditionEvaluator.shouldSkip返回true直接跳出beandefinition生成逻辑 private <T> void doRegisterBean(Class<T> beanClass, Nullable String name,Nullable Class<? …

实验数据处理

来源 加热冷却温度实验&#xff0c;相同实验参数可能有一次或多次重复实验&#xff0c;一次实验中也可能有多次。如何分别每一次周期&#xff0c;并把每个周期的数据都分析出来&#xff0c;成为一个问题。 解决思想 想根据冷却后的平台划分不同周期&#xff0c;但是由于冷却…

web前端期末大作业【仿12306铁路官网首页】学生网页设计作业源码

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

分享5款同类软件中的翘楚,属于是WIN10必备良品

今天要给大家推荐的是5款软件&#xff0c;每个都是同类软件中的个中翘楚,请大家给我高调地使用起来,不用替我藏着掖着。 1.PPT插件——OneKeyTools OK插件是一款免费的PPT插件&#xff0c;让你的PPT制作有无限可能&#xff01;它的功能&#xff0c;太多了&#xff0c;比如图片…

Apache HTTPD 换行解析漏洞(CVE-2017-15715)

漏洞环境 Vulhub 影响版本 Apache 2.4.0~2.4.29 漏洞简介 Apache HTTPD 是一款 HTTP 服务器&#xff0c;其 2.4.0~2.4.29 版本中存在一个解析漏洞&#xff0c;在解析 PHP 时&#xff0c;1.php\x0A 将被按照 PHP 后缀进行解析。 解析漏洞是指服务器应用程序会把某些人为构造…

QT开发实例之常用控件(上)

目录QT控件使用范例设置窗口属性字体形状窗体QPushButton 按钮QLabelQLineEdit 单行文本QComboBox 下拉列表框QFontComboBox 字体下拉列表框QSpinBox 控件QTimeEdit 时间控件QDateEdit 日期控件QScrollBar 滑动条控件QRadioButton 单选按钮QCheckBox 复选框QT控件使用范例 设置…

[附源码]计算机毕业设计JAVA卡牌交易网站

[附源码]计算机毕业设计JAVA卡牌交易网站 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis M…

华为认证HCIP的持证人数

华为认证hcip多少人通过了考试&#xff1f; hcip通过的人数比hcie多很多&#xff1b; 华为官方并没有披露hcip通过的相关数据。 唯一可以借鉴的数据&#xff1a;截止到2020年HCIE的持证人数大约在15000左右。 有多少人过了hcip其实并不是一件非常重要的事&#xff0c;重要的…