Numpy(3/3):进阶知识
目录
一、NumPy 排序、条件刷选函数
二、NumPy 字节交换
三、NumPy 副本和视图
四、NumPy 矩阵库(Matrix)
五、NumPy 线性代数
六、NumPy IO
七、NumPy Matplotlib
一、NumPy 排序、条件刷选函数
numpy.argsort() 函数返回的是数组值从小到大的索引值。
numpy.lexsort() 用于对多个序列进行排序。把它想象成对电子表格进行排序,每一列代表一个序列,排序时优先照顾靠后的列。这里举一个应用场景:小升初考试,重点班录取学生按照总成绩录取。在总成绩相同时,数学成绩高的优先录取,在总成绩和数学成绩都相同时,按照英语成绩录取…… 这里,总成绩排在电子表格的最后一列,数学成绩在倒数第二列,英语成绩在倒数第三列。
numpy.argmax() 和 numpy.argmin()函数分别沿给定轴返回最大和最小元素的索引。
numpy.nonzero() 函数返回输入数组中非零元素的索引。
numpy.where() 函数返回输入数组中满足给定条件的元素的索引。
numpy.extract() 函数根据某个条件从数组中抽取元素,返回满条件的元素。
import numpy as np x = np.arange(9.).reshape(3, 3)
print ('我们的数组是:')
print (x)
# 定义条件, 选择偶数元素
condition = np.mod(x,2) == 0
print ('按元素的条件值:')
print (condition)
print ('使用条件提取元素:')
print (np.extract(condition, x))
二、NumPy 字节交换
略
三、NumPy 副本和视图
副本是一个数据的完整的拷贝,如果我们对副本进行修改,它不会影响到原始数据,物理内存不在同一位置。
视图是数据的一个别称或引用,通过该别称或引用亦便可访问、操作原有数据,但原有数据不会产生拷贝。如果我们对视图进行修改,它会影响到原始数据,物理内存在同一位置。
视图一般发生在:
- 1、numpy 的切片操作返回原数据的视图。
- 2、调用 ndarray 的 view() 函数产生一个视图。
副本一般发生在:
- Python 序列的切片操作,调用deepCopy()函数。
- 调用 ndarray 的 copy() 函数产生一个副本。
四、NumPy 矩阵库(Matrix)
NumPy 中包含了一个矩阵库 numpy.matlib,该模块中的函数返回的是一个矩阵,而不是 ndarray 对象。
转置矩阵:NumPy 中除了可以使用 numpy.transpose 函数来对换数组的维度,还可以使用 T 属性。
import numpy as npa = np.arange(12).reshape(3,4)print ('原数组:')
print (a)
print ('\n')print ('转置数组:')
print (a.T)
matlib.empty() 函数返回一个新的矩阵,语法格式为:
import numpy.matlib
import numpy as npprint (np.matlib.empty((2,2)))
# 填充为随机数据
numpy.matlib.zeros() 函数创建一个以 0 填充的矩阵。
numpy.matlib.ones()函数创建一个以 1 填充的矩阵。
numpy.matlib.eye() 函数返回一个矩阵,对角线元素为 1,其他位置为零,不一定是方阵。
numpy.matlib.identity() 函数返回给定大小的单位矩阵。单位矩阵是个方阵,从左上角到右下角的对角线(称为主对角线)上的元素均为 1,除此以外全都为 0。
numpy.matlib.rand() 函数创建一个给定大小的矩阵,数据是随机填充的。
矩阵总是二维的,而 ndarray 是一个 n 维数组。 两个对象都是可互换的。
五、NumPy 线性代数
numpy.matmul和dot不同点:
numpy.dot() 对于两个一维的数组,计算的是这两个数组对应下标元素的乘积和(数学上称之为内积);对于二维数组,计算的是两个数组的矩阵乘积;对于多维数组,它的通用计算公式如下,即结果数组中的每个元素都是:数组a的最后一维上的所有元素与数组b的倒数第二位上的所有元素的乘积和: dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])。
numpy.matmul 函数返回两个数组的矩阵乘积。 虽然它返回二维数组的正常乘积,但如果任一参数的维数大于2,则将其视为存在于最后两个索引的矩阵的栈,并进行相应广播。另一方面,如果任一参数是一维数组,则通过在其维度上附加 1 来将其提升为矩阵,并在乘法之后被去除。但对于二维数组,它就是矩阵乘法。
六、NumPy IO
七、NumPy Matplotlib
Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 它也可以和图形工具包一起使用,如 PyQt 和 wxPython。
import numpy as np
from matplotlib import pyplot as plt x = np.arange(1,11)
y = 2 * x + 5
plt.title("Matplotlib demo")
plt.xlabel("x axis caption")
plt.ylabel("y axis caption")
plt.plot(x,y)
plt.show()
关于绘图库的更多知识建议单独学习。
Numpy(3/3):进阶知识相关推荐
- Android进阶知识:绘制流程(上)
1.前言 之前写过一篇Android进阶知识:事件分发与滑动冲突,主要研究的是关于Android中View事件分发与响应的流程.关于View除了事件传递流程还有一个很重要的就是View的绘制流程.一个 ...
- react只停留在表层?五大知识点带你梳理进阶知识
五大知识点带你梳理react进阶知识 ✉️前言
- webpack入门核心知识还看不过瘾?速来围观万字入门进阶知识
一文了解webpack入门进阶知识
- python的格式化输出学号_安利三个关于Python字符串格式化进阶知识
点击蓝色"Python空间"关注我丫 加个"星标",每天一起快乐的学习 今 日 鸡 汤 名花倾国两相欢,常得君王带笑看. /前言/ 关于Python字符串格式化 ...
- Java工程师进阶知识完全扫盲, 太全了!!
项目简介 本期介绍的开源项目名称叫做:advanced-java 中文名:互联网 Java 工程师进阶知识完全扫盲,该项目主要是为Java开发工程师提供进阶知识讲解,从而提升Java工程师技术与能力! ...
- 【C++进阶知识】C++类的继承和派生
目录 C++进阶知识系列文章 C++类的继承和派生 基本语法 访问修饰符 构造函数和析构函数 覆盖父类的方法 虚函数和纯虚函数 示例代码 参考资料 C++进阶知识系列文章 C++类的继承和派生 在面向 ...
- Android进阶知识(二十五):Bitmap简介及其高效加载
Android进阶知识(二十五):Bitmap简介及其高效加载 一.Bitmap Bitmap代表一个位图,在Android中指的是一张图片,可以是png.jpg等格式的图片.BitmapDraw ...
- MariaDB/Mysql数据库进阶知识
这一篇章主要说一下关于MariaDB/Mysql的一些进阶知识,希望可以加深自己的理解 MariaDB的特性 插件式存储引擎:也称为"表类型",存储管理器有多种实现版本,功能和特性 ...
- Java数据结构与算法面试题,首发Java程序员人手必备的进阶知识体系,(1)
在市场上很少能够看到一套不错的学习笔记,小编也是花了挺久的时间总结了这份**<Java程序员人手必备的进阶知识体系>**,帮助大家系统化高效的进阶学习,而不是零散低效的阅读. 2020全新 ...
- mysql/mariadb 进阶知识之表设计和查询
进阶知识之表设计和查询 学生信息.成绩.课程数据表,提取码:iqub 评论及回复数据表,提取码:hdr7 一.表设计之数据类型选择 1.1.表设计步骤 第一步,确定大类型:数字.字符串.日期等级等: ...
最新文章
- TF之LiR:基于tensorflow实现手写数字图片识别准确率
- PMCAFF微课堂|简书大咖彭小六:6年PM是如何利用阅读进行职场提升
- [云炬创业基础笔记] 第四章测试13
- PHP连接MSSQL
- 通向架构师的道路(第四天)之Tomcat性能调优-让小猫飞奔
- iOS开发:AFNetworking、MKNetworkKit和ASIHTTPRequest比较
- python赋值01_python学习笔记1-赋值与字符串 | 学步园
- Vue3 高级语法(二)—— 自定义指令、Teleport、Vue插件
- PAIP.java程序调试的注意点及流程总结
- Linux安装Vmware Workstation
- 极简图床 + 阿里云OSS 做图片外链
- 解决日志打印过多问题
- android 自动加微信群,如何完美实现微信自动发朋友圈自动添加好友等等
- 谈谈自己对教育的理解(K12)
- BT面板创建站点显示已存在问题解决
- SpringBoot实现动态定时任务
- 大学心理学课本_儿童心理学(第六版)/普通高等教育国家级规划教材
- 飞机MRO软件的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- cleave.js_Cleave.js的Vue.js 2.x组件
- 变换域信息隐藏--DCT