【总结】Numpy2

Numpy

1. 数组和数的运算

array1 = np.arange(1,10)
array1 # array([1, 2, 3, 4, 5, 6, 7, 8, 9])
array1 + 10 # array([11, 12, 13, 14, 15, 16, 17, 18, 19])
array1 - 10 # array([-9, -8, -7, -6, -5, -4, -3, -2, -1])
array1 * 10 # array([10, 20, 30, 40, 50, 60, 70, 80, 90])
array1 ** 10
array1 > 3 # array([False, False, False,  True,  True,  True,  True,  True,  True])

2. 数组和数组的运算

array2 = np.array([10,10,10,20,20,20,30,30,30])
array2 # array([10, 10, 10, 20, 20, 20, 30, 30, 30])
array2.shape # (9,)
array1 + array2 # array([11, 12, 13, 24, 25, 26, 37, 38, 39])
array1 * array2  # array([ 10,  20,  30,  80, 100, 120, 210, 240, 270])
array1 > array2 # array([False, False, False, False, False, False, False, False, False])
array1 ** array2

array3 = np.arange(1,10).reshape(3,3)
array3
'''
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
'''
array3.shape # (3, 3)
array4 = array2.reshape(3,3)
array4
'''
array([[10, 10, 10],
       [20, 20, 20],
       [30, 30, 30]])
'''
array4 / array3
array4 // array3

2.1 广播机制

如果参与运算的两个数组形状(shape)不一样,numpy会使用广播机制使形状一样 广播机制条件(二选一):

  • 两个数组形状虽然不一样,但是后缘维度(shape属性从后往前看对应的部分)相同
  • 两个数组形状不一样且后缘维度不相同,但是其中有一方在某个轴上的长度(size)为1

请添加图片描述
请添加图片描述

请添加图片描述

2.2 矩阵乘法

array9
'''
array([[1, 2],
       [3, 4],
       [5, 6]])
'''
array10
'''
array([[2, 8, 6, 5],
       [7, 2, 2, 3]])
'''
array9 @ array10
np.matmul(array9,array10)
'''
array([[16, 12, 10, 11],
       [34, 32, 26, 27],
       [52, 52, 42, 43]])
'''


3.Numpy操作数组的函数

x = np.array([1,2,-3,0])
y = np.array([4,0,0,0])
z = x / y
z # array([0.25,  inf, -inf,  nan])

3.1 isinf

# 检测是否有无穷大值
np.isinf(z) # array([False,  True,  True, False])
# nan:not a number
array11 = np.array([10,np.nan,20,30])
array11  # array([10., nan, 20., 30.])

3.2 isnan:判断空值

# 判断空值
np.isnan(array11) # array([False,  True, False, False])
# 排除空值
array11[~np.isnan(array11)] # array([10., 20., 30.])

3.3 矩阵点乘:dot

𝐴⋅𝐵=|𝐴||𝐵|𝐶𝑂𝑆𝜃

𝐶𝑂𝑆𝜃=𝐴⋅𝐵|𝐴||𝐵|

u = np.array([3,4])
v = np.array([5,1])
# 计算夹角余弦
# 模:np.linalg.norm(u)
np.dot(u,v) / np.linalg.norm(u) / np.linalg.norm(v)
# 计算角度
# 弧长:np.arccos
# 角度:np.rad2deg
np.rad2deg(np.arccos(np.dot(u,v) / np.linalg.norm(u) / np.linalg.norm(v)))
# 说明:夹角越小说明两个向量相似度越高

3.4 扁平化:flatten、ravel

array9
'''
array([[1, 2],
       [3, 4],
       [5, 6]])
'''
# 扁平化
array9.flatten() # array([1, 2, 3, 4, 5, 6])
array9.reshape(-1) # array([1, 2, 3, 4, 5, 6])

# 扁平化(性能更好)
array9.ravel() # array([1, 2, 3, 4, 5, 6])

3.5 in1d

array10 = np.array([22,44,55])
array11 = np.array([[66,44,22],[33,44,77]])
np.in1d(array10,array11)
'''
array([ True,  True, False])
'''

3.6 交集,并集

𝐴∩𝐵元素的个数 / 𝐴∪𝐵元素的个数

  • 交集:np.intersect1d
  • 并集:np.union1d
user_a = np.array(['A','B','E','F','G','X','Y'])
user_b = np.array(['E','H','J','K','P','Q','X'])
user_c = np.array(['C','B','E','F','G','X','Y'])
np.intersect1d(user_a,user_b).size / np.union1d(user_a,user_b).size
np.intersect1d(user_a,user_c).size / np.union1d(user_a,user_c).size
np.intersect1d(user_b,user_c).size / np.union1d(user_b,user_c).size

3.7 拷贝

用copy拷贝后再修改,不会改变原数组

3.8 堆叠、拆分

  • hstackvstackstackconcatenatevsplithsplit

1)堆叠


array16 = np.array([[1,1,1],[2,2,2],[3,3,3]])
array17 = np.array([[4,4,4],[5,5,5],[6,6,6]])
# 1) hstack
np.hstack((array16,array17))
'''
array([[1, 1, 1, 4, 4, 4],
       [2, 2, 2, 5, 5, 5],
       [3, 3, 3, 6, 6, 6]])
'''

# 2) vstack
np.vstack((array16,array17))
'''
array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3],
       [4, 4, 4],
       [5, 5, 5],
       [6, 6, 6]])
'''
# 3) stack
array15 = np.stack((array16,array17))
array15
# axis=0
'''
array([[[1, 1, 1],
        [2, 2, 2],
        [3, 3, 3]],

       [[4, 4, 4],
        [5, 5, 5],
        [6, 6, 6]]])
'''
np.stack((array16,array17), axis=1)
'''
array([[[1, 1, 1],
        [4, 4, 4]],

       [[2, 2, 2],
        [5, 5, 5]],

       [[3, 3, 3],
        [6, 6, 6]]])
'''

2)拆分

array18 = np.array([[1,1,1],[2,2,2],[3,3,3],[4,4,4],[5,5,5],[6,6,6]])
array18
'''
array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3],
       [4, 4, 4],
       [5, 5, 5],
       [6, 6, 6]])
'''
# 垂直方向拆分(行)
np.vsplit(array18,3)
'''
[array([[1, 1, 1],
        [2, 2, 2]]),
 array([[3, 3, 3],
        [4, 4, 4]]),
 array([[5, 5, 5],
        [6, 6, 6]])]
'''

# 水平方向拆分(列)
np.hsplit(array18,3)
'''
[array([[1],
        [2],
        [3],
        [4],
        [5],
        [6]]),
 array([[1],
        [2],
        [3],
        [4],
        [5],
        [6]]),
 array([[1],
        [2],
        [3],
        [4],
        [5],
        [6]])]
'''

3)拼接

# 拼接(默认沿着0轴拼接)
np.concatenate((array16,array17))
'''
array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3],
       [4, 4, 4],
       [5, 5, 5],
       [6, 6, 6]])
'''

np.concatenate((array16,array17),axis=1)
'''
array([[1, 1, 1, 4, 4, 4],
       [2, 2, 2, 5, 5, 5],
       [3, 3, 3, 6, 6, 6]])
'''

3.9 增加:append、insert

array16
'''
array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3]])
'''
np.append(array16,100) # array([  1,   1,   1,   2,   2,   2,   3,   3,   3, 100])

np.append(array16,[1,2,3]) # array([1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 2, 3])

np.insert(array16,0,100) # array([100,   1,   1,   1,   2,   2,   2,   3,   3,   3])

np.insert(array16,1,[5,6,7])
# array([1, 5, 6, 7, 1, 1, 2, 2, 2, 3, 3, 3])

3.10 argwhere:查找非0元素索引

array16
'''
array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3]])
'''
np.argwhere(array16)
'''
array([[0, 0],
       [0, 1],
       [0, 2],
       [1, 0],
       [1, 1],
       [1, 2],
       [2, 0],
       [2, 1],
       [2, 2]],
'''

3.11 extract、select、where

array21 = np.arange(1,10)
array21
# array([1, 2, 3, 4, 5, 6, 7, 8, 9])

# 根据条件抽取数据(相当于布尔索引)
np.extract(array21 > 5,array21) # array([6, 7, 8, 9])

# np.select(condlist, choicelist, default=0)
# 根据条件处理数据得到新的数组数据
np.select([array21 < 3,array21>5],[array21+10,array21**2])
# array([11, 12,  0,  0,  0, 36, 49, 64, 81])

# 给出一个条件将满足不满足条件的数据粉被处理得到新的数组对象
np.where(array21 > 5, array21 + 10, array21 ** 2)
# array([ 1,  4,  9, 16, 25, 16, 17, 18, 19])

3.12 filp:翻转

np.flip(array21,axis=0)
# array([9, 8, 7, 6, 5, 4, 3, 2, 1])

array19 = np.stack((array16,array17), axis=1)
array19
'''
array([[[1, 1, 1],
        [4, 4, 4]],

       [[2, 2, 2],
        [5, 5, 5]],

       [[3, 3, 3],
        [6, 6, 6]]])
'''

np.flip(array19,axis=1)
'''
array([[[4, 4, 4],
        [1, 1, 1]],

       [[5, 5, 5],
        [2, 2, 2]],

       [[6, 6, 6],
        [3, 3, 3]]])
'''

np.flip(array19,axis=0)
'''
array([[[3, 3, 3],
        [6, 6, 6]],

       [[2, 2, 2],
        [5, 5, 5]],

       [[1, 1, 1],
        [4, 4, 4]]])
'''

3.13 roll

  • 沿着指定轴对数组移位
array21 # array([1, 2, 3, 4, 5, 6, 7, 8, 9])
np.roll(array21,2,axis=0)
# array([8, 9, 1, 2, 3, 4, 5, 6, 7])
array19
'''
array([[[1, 1, 1],
        [4, 4, 4]],

       [[2, 2, 2],
        [5, 5, 5]],

       [[3, 3, 3],
        [6, 6, 6]]])
'''
np.roll(array19,2,axis=0)
'''
array([[[2, 2, 2],
        [5, 5, 5]],

       [[3, 3, 3],
        [6, 6, 6]],

       [[1, 1, 1],
        [4, 4, 4]]])
'''
np.roll(array19,1,axis=1)
'''
array([[[4, 4, 4],
        [1, 1, 1]],

       [[5, 5, 5],
        [2, 2, 2]],

       [[6, 6, 6],
        [3, 3, 3]]])
'''

3.14 repeat、tile:重复

array21 # array([1, 2, 3, 4, 5, 6, 7, 8, 9])
# 重复创建新的数组对象
np.repeat(array21,3)
# array([1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9])
np.tile(array21,3)
# array([1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9])

3.15 resize:重新调整数组大小

array18
'''
array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3],
       [4, 4, 4],
       [5, 5, 5],
       [6, 6, 6]])
'''
np.resize(array18,(3,4))
'''
array([[1, 1, 1, 2],
       [2, 2, 3, 3],
       [3, 4, 4, 4]])
'''
np.resize(array18,(8,4))
'''
array([[1, 1, 1, 2],
       [2, 2, 3, 3],
       [3, 4, 4, 4],
       [5, 5, 5, 6],
       [6, 6, 1, 1],
       [1, 2, 2, 2],
       [3, 3, 3, 4],
       [4, 4, 5, 5]])
'''

3.16 put、place

  • 将满足条件的元素/指定位置的元素替换成指定值
array22 = np.copy(array21)
array22 # array([1, 2, 3, 4, 5, 6, 7, 8, 9])
np.put(array22, [0,4,6], [100,200])
array22 # array([100,   2,   3,   4, 200,   6, 100,   8,   9])
np.place(array22, array22 < 100, [33,66,77])
array22 # array([100,  33,  66,  77, 200,  33, 100,  66,  77])
   [3, 4, 4, 4],
   [5, 5, 5, 6],
   [6, 6, 1, 1],
   [1, 2, 2, 2],
   [3, 3, 3, 4],
   [4, 4, 5, 5]])

‘’’


### 3.16 put、place

+ 将满足条件的元素/指定位置的元素替换成指定值

```python
array22 = np.copy(array21)
array22 # array([1, 2, 3, 4, 5, 6, 7, 8, 9])
np.put(array22, [0,4,6], [100,200])
array22 # array([100,   2,   3,   4, 200,   6, 100,   8,   9])
np.place(array22, array22 < 100, [33,66,77])
array22 # array([100,  33,  66,  77, 200,  33, 100,  66,  77])

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3-《安卓基础》

3-《安卓基础》 一.Android系统架构二.四大组件1. Activity1.1 生命周期1.2. Activity四种启动模式1.3.Activity任务栈的概念1.4 面试题面试题1&#xff1a;onSaveInstanceState(Bundle outState)&#xff0c;onRestoreInstanceState(Bundle savedInstanceState) 的调用时机&am…

小黑子—Java从入门到入土过程:第十一章 - 网络编程、反射及动态代理

Java零基础入门11.0 网络编程1. 初识网络编程2. 网络编程三要素3.IP三要素3.1 IPV4的细节3.1.1特殊的IP地址3.1.2 常用的CMD命令 3.2 InetAddress 的使用3.3 端口号3.4 协议3.4.1 UDP协议3.4.1 - I UDP 发送数据3.4.1 - II UDP 接收数据3.4.1 - III UDP 练习&#xff08;聊天室…

前端列表页+element-puls实现列表数据弹窗功能

效果图&#xff1a; 这是一个修改的弹窗&#xff0c;我们要实现的功能是&#xff0c;在列表&#xff0c;点击修改按钮时&#xff0c;将数据带入到弹窗里面&#xff0c;点击保存时关闭弹窗。 1&#xff0c;点击修改展开弹窗 使用 eldialog组件&#xff0c;v-model绑定的值为tru…

Godot引擎 4.0 文档 - 入门介绍 - 学习新功能

本文为Google Translate英译中结果&#xff0c;DrGraph在此基础上加了一些校正。英文原版页面&#xff1a; Learning new features — Godot Engine (stable) documentation in English 学习新功能 Godot 是一个功能丰富的游戏引擎。有很多关于它的知识。本页介绍了如何使用…

迪赛智慧数——柱状图(基本柱状图):全球自动化无人机智能支出预测

效果图 全球自动化无人机智能支出及预测分析&#xff0c;2022年机器人流程自动化支出10.4十亿美元&#xff0c;智能流程自动化支出13十亿美元&#xff0c;人工智能业务操作达10.8十亿美元&#xff0c;未来&#xff0c;这些数字将进一步增长&#xff0c;自动化无人机智能也将拥有…

华为OD机试真题 Java 实现【天然蓄水池】【2023Q1 200分】

一、题目描述 公元2919年&#xff0c;人类终于发现了一颗宜居星球——X星。现想在X星一片连绵起伏的山脉间建一个天然蓄水库&#xff0c;如何选取水库边界&#xff0c;使蓄水量最大&#xff1f; 要求&#xff1a; 山脉用正整数数组s表示&#xff0c;每个元素代表山脉的高度。…

Java基础-面向对象总结(3)

本篇文章主要讲解Java面向对象的知识点 面向对象的三大特性类的扩展(抽象类,接口,内部类,枚举) 目录 面向对象和面向过程的区别? 面向对象的五大基本原则 面向对象三大特性 继承 怎么理解继承 ? 继承和聚合的区别&#xff1f; 封装 多态 什么是多态 什么是运行时多…

数字识别问题

文章目录 6.1 MNIST数据处理6.2.1 训练数据6.2.2 变量管理6.3.1 保存模型6.3.1 加载计算图6.3.1 加载模型6.3.2 导出元图 6.1 MNIST数据处理 在直接在第6章的目录下面创建文件 compat.v1.是tensorflow2.x的语法&#xff0c;全部删掉 删除compat.v1.后的代码 # -*- coding: …

基于最新SolVES 模型与多技术融合【QGIS、PostgreSQL、ARCGIS、MAXENT、R】实现生态系统服务功能社会价值评估及拓展案例分析

目录 第一章 理论基础与研究热点 第二章 SolVES 4.0 模型运行环境配置 第三章 SolVES 4.0 模型运行 第四章 数据获取与入库 第五章 环境变量与社会价值的相关分析 第六章 拓展案例分析 SolVES模型&#xff08;Social Values for Ecosystem Services&#xff09;全称为生态…

如何使用SolVES 模型与多技术融合实现生态系统服务功能社会价值评估?

生态系统服务是人类从自然界中获得的直接或间接惠益&#xff0c;可分为供给服务、文化服务、调节服务和支持服务4类&#xff0c;对提升人类福祉具有重大意义&#xff0c;且被视为连接社会与生态系统的桥梁。自从启动千年生态系统评估项目&#xff08;Millennium Ecosystem Asse…

SSL/TLS认证握手过程

一: SSL/TLS介绍 什么是SSL,什么是TLS呢&#xff1f;官话说SSL是安全套接层(secure sockets layer)&#xff0c;TLS是SSL的继任者&#xff0c;叫传输层安全(transport layer security)。说白点&#xff0c;就是在明文的上层和TCP层之间加上一层加密&#xff0c;这样就保证上层信…

Jenkins + docker-compose 在 Centos 上搭建部署

一、前期准备 1. 检查 CentOS上 是否安装 docker 可以使用以下命令&#xff1a; sudo docker version 如果已经安装了Docker&#xff0c;它将显示有关Docker版本和构建信息的输出。如果未安装Docker&#xff0c;将收到有关命令未找到的错误消息。 2. 检查是否安装 docker-…

吴恩达 x OpenAI Prompt Engineering教程中文笔记

Datawhale干货 作者&#xff1a;刘俊君&#xff0c;Datawhale成员 完整课程&#xff1a;《吴恩达ChatGPT最新课程》 &#x1f433;Reasons & Importance Important for research, discoveries, and advancement 对研究、发现和进步很重要 Accelerate the scientific resea…

MySQL 事务篇

事务有哪些特性&#xff1f; 原子性&#xff1a; 一个事务中的所有操作&#xff0c;必须全部执行。要么全部完成要么就不完成。中间如果出现错误&#xff0c;就要回滚到初始状态。 持久性&#xff1a; 事务处理结束后&#xff0c;对数据的修改就是永久的&#xff0c;就是系统故…

Unity UI -- (5)增加基础按钮功能

分析分析一些常见UI 良好的UI设计会清晰地和用户沟通。用户知道他们能和屏幕上哪些东西交互&#xff0c;哪些不能。如果他们进行了交互&#xff0c;他们也要清楚地知道交互是否成功。换句话说&#xff0c;UI要提供给用户很多反馈。 我们可以来看看在Unity里或者在计算机上的任何…

【数据结构】树和二叉树和基本介绍、树的基本术语和表示、二叉树的性质和储存结构

文章目录 1.树的基本概念和介绍1.1树的概念1.2树的基本术语1.3树的使用1.4树的表示1.4.1图形表示1.4.2代码表示 2.二叉树的基本概念和介绍2.1二叉树的介绍2.2二叉树的性质2.3二叉树的储存结构2.3.1顺序储存结构2.3.2链式存储结构 1.树的基本概念和介绍 1.1树的概念 在以前的学…

关于Markdown文件的处理【笔记】

关于Markdown文件的处理【笔记】 前言推荐关于Markdown文件的处理一、md文件转word文档1 准备2 打开3 转为word文档4 导出结果5 打开 二、word文档转md文件1 准备2 导入3 打开4 显示图片5 打开 三、导入到CSDN中1 选择导入2 查看 四、导入设置1 前言2 导入设置3 修改配置 最后 …

C++中map的用法

博主简介&#xff1a;Hello大家好呀&#xff0c;我是陈童学&#xff0c;一个与你一样正在慢慢前行的人。 博主主页&#xff1a;陈童学哦 所属专栏&#xff1a;CSTL 前言&#xff1a;Hello各位小伙伴们好&#xff01;欢迎来到本专栏CSTL的学习&#xff0c;本专栏旨在帮助大家了解…

【分享】ChatGPT的key,用key免费使用ChatGPT(每天更新)

1、ChatGPT用法总结&#xff1a; 自动化文本生成&#xff1a;可以用GPT生成文章、新闻、文本摘要&#xff0c;甚至小说、诗歌等文学作品。语音生成&#xff1a;结合语音合成技术&#xff0c;GPT可以生成自然流畅的语音&#xff0c;可以用于语音助手、交互式语音应用等。问答系统…

深度学习笔记之递归网络(五)递归神经网络的反向传播过程

机器学习笔记之递归网络——递归神经网络的反向传播过程 引言回顾&#xff1a;递归神经网络的前馈计算过程场景构建前馈计算描述 反向传播过程各参数的梯度计算各时刻损失函数梯度计算损失函数对各时刻神经元输出的梯度计算 Softmax \text{Softmax} Softmax回归的梯度计算关于 …