学习Numpy(五)
目录
- 一、复习Numpy数组操作和字符串操作
- 1.修改数组形状
- 2.翻转数组
- 3.连接数组
- 4.分割数组
- 5.数组元素的添加与删除
- 6.NumPy 字符串函数
- 二、学习新知识
- 1.NumPy 统计函数
- numpy.amin() 和 numpy.amax()
- numpy.ptp()
- numpy.percentile()
- numpy.median()
- numpy.mean()
- numpy.average()
- 方差.var(),
- 标准差.std(),
- 2.NumPy 排序、条件刷选函数
- numpy.sort()
- numpy.argsort()
- sort_complex()
- partition()
- numpy.argmax() 和 numpy.argmin()
- numpy.nonzero()
- numpy.where()
- numpy.extract()
一、复习Numpy数组操作和字符串操作
1.修改数组形状
numpy.reshape()常用表示:np.arange(24).reshape(4,6)
numpy.ndarray.flat 数组元素迭代器
for item in a.flat:print(item)
numpy.ndarray.flatten () 打平数组,不会改变原数组
numpy.ravel() 打平数组,会改变原始数组
2.翻转数组
numpy.transpose(),比如
a = np.arange(8).reshape(2,2,2)
a.transpose(2,1,0)
numpy.rollaxis() 向后滚动特定的轴,其他轴的相对位置不会改变np.rollaxis(a, 2,0)
numpy.swapaxes()交换两个轴的位置np.swapaxes(a, 2, 0)
3.连接数组
numpy.concatenate()numpy.concatenate((a1, a2, ...), axis)
numpy.stack()numpy.stack(arrays, axis)
,默认按行堆叠
numpy.hstack():水平堆叠。
numpy.vstack():垂直堆叠。
np.dstack():按深度堆叠。
4.分割数组
numpy.split()numpy.split(ary, indices_or_sections, axis)
分割的数量要能整除
numpy.hsplit():水平分割
numpy.vsplit() :垂直分割
dsplit():按深度分割
5.数组元素的添加与删除
numpy.append () numpy.append(arr, values, axis=None)
numpy.insert() numpy.insert(arr, obj, values, axis)
#要指出插入位置的索引
numpy.delete()Numpy.delete(arr, obj, axis)
numpy.unique()函数用于去除数组中的重复元素。numpy.unique(arr, return_index, return_inverse, return_counts)
6.NumPy 字符串函数
二、学习新知识
1.NumPy 统计函数
numpy.amin() 和 numpy.amax()
numpy.amin() 用于计算数组中的元素沿指定轴的最小值。
numpy.amax() 用于计算数组中的元素沿指定轴的最大值。
a = np.array([[3,7,5],[8,4,3],[2,4,9]])
print ('我们的数组是:')
print (a)
print ('\n')
print ('调用 amin() 函数:')
print (np.amin(a,1))
print ('\n')
print ('再次调用 amin() 函数:')
print (np.amin(a,0))
print ('\n')
print ('调用 amax() 函数:')
print (np.amax(a))
print ('\n')
print ('再次调用 amax() 函数:')
print (np.amax(a, axis = 0))
输出:
我们的数组是:
[[3 7 5][8 4 3][2 4 9]]调用 amin() 函数:
[3 3 2]再次调用 amin() 函数:
[2 4 3]调用 amax() 函数:
9再次调用 amax() 函数:
[8 7 9]
numpy.ptp()
numpy.ptp()函数计算数组中元素最大值与最小值的差(最大值 - 最小值)。
a = np.array([[3,7,5],[8,4,3],[2,4,9]])
print ('我们的数组是:')
print (a)
print ('\n')
print ('调用 ptp() 函数:')
print (np.ptp(a))
print ('\n')
print ('沿轴 1 调用 ptp() 函数:')
print (np.ptp(a, axis = 1))
print ('\n')
print ('沿轴 0 调用 ptp() 函数:')
print (np.ptp(a, axis = 0))
输出:
我们的数组是:
[[3 7 5][8 4 3][2 4 9]]调用 ptp() 函数:
7沿轴 1 调用 ptp() 函数:
[4 5 7]沿轴 0 调用 ptp() 函数:
[6 3 6]
numpy.percentile()
百分位数是统计中使用的度量,表示小于这个值的观察值的百分比numpy.percentile(a, q, axis)
参数说明:
a: 输入数组
q: 要计算的百分位数,在 0 ~ 100 之间
axis: 沿着它计算百分位数的轴
a = np.array([[10, 7, 4], [3, 2, 1]])
print ('我们的数组是:')
print (a)print ('调用 percentile() 函数:')
# 50% 的分位数,就是 a 里排序之后的中位数
print (np.percentile(a, 50)) # axis 为 0,在纵列上求
print (np.percentile(a, 50, axis=0)) # axis 为 1,在横行上求
print (np.percentile(a, 50, axis=1)) # 保持维度不变
print (np.percentile(a, 50, axis=1, keepdims=True))
输出:
我们的数组是:
[[10 7 4][ 3 2 1]]
调用 percentile() 函数:
3.5
[6.5 4.5 2.5]
[7. 2.]
[[7.][2.]]
numpy.median()
numpy.median() 函数用于计算数组 a 中元素的中位数(中值)
a = np.array([[30,65,70],[80,95,10],[50,90,60]])
print ('我们的数组是:')
print (a)
print ('\n')
print ('调用 median() 函数:')
print (np.median(a))
print ('\n')
print ('沿轴 0 调用 median() 函数:')
print (np.median(a, axis = 0))
print ('\n')
print ('沿轴 1 调用 median() 函数:')
print (np.median(a, axis = 1))
输出:
我们的数组是:
[[30 65 70][80 95 10][50 90 60]]调用 median() 函数:
65.0沿轴 0 调用 median() 函数:
[50. 90. 60.]沿轴 1 调用 median() 函数:
[65. 80. 60.]
numpy.mean()
numpy.mean() 函数返回数组中元素的算术平均值。 如果提供了轴,则沿其计算。
a = np.array([[1,2,3],[3,4,5],[4,5,6]])
print ('我们的数组是:')
print (a)
print ('\n')
print ('调用 mean() 函数:')
print (np.mean(a))
print ('\n')
print ('沿轴 0 调用 mean() 函数:')
print (np.mean(a, axis = 0))
print ('\n')
print ('沿轴 1 调用 mean() 函数:')
print (np.mean(a, axis = 1))
输出:
调用 mean() 函数:
3.6666666666666665沿轴 0 调用 mean() 函数:
[2.66666667 3.66666667 4.66666667]沿轴 1 调用 mean() 函数:
[2. 4. 5.]
numpy.average()
numpy.average() 函数根据在另一个数组中给出的各自的权重计算数组中元素的加权平均值。
a = np.array([1,2,3,4])
print ('我们的数组是:')
print (a)
print ('\n')
print ('调用 average() 函数:')
print (np.average(a))
print ('\n')
# 不指定权重时相当于 mean 函数
wts = np.array([4,3,2,1])
print ('再次调用 average() 函数:')
print (np.average(a,weights = wts))
print ('\n')
# 如果 returned 参数设为 true,则返回权重的和
print ('权重的和:')
print (np.average([1,2,3, 4],weights = [4,3,2,1], returned = True))
输出:
我们的数组是:
[1 2 3 4]调用 average() 函数:
2.5再次调用 average() 函数:
2.0权重的和:
(2.0, 10.0)
方差.var(),
如np.var([1,2,3,4])
标准差.std(),
如np.std([1,2,3,4])
2.NumPy 排序、条件刷选函数
numpy.sort()
numpy.sort() 函数返回输入数组的排序副本numpy.sort(a, axis, kind, order)
参数说明:
a: 要排序的数组
axis: 沿着它排序数组的轴,如果没有数组会被展开,沿着最后的轴排序, axis=0 按列排序,axis=1 按行排序
kind: 默认为'quicksort'(快速排序)
order: 如果数组包含字段,则是要排序的字段
a = np.array([[3,7],[9,1]])
print ('我们的数组是:')
print (a)
print ('\n')
print ('调用 sort() 函数:')
print (np.sort(a))
print ('\n')
print ('按列排序:')
print (np.sort(a, axis = 0))
print ('\n')
# 在 sort 函数中排序字段
dt = np.dtype([('name', 'S10'),('age', int)])
a = np.array([("raju",21),("anil",25),("ravi", 17), ("amar",27)], dtype = dt)
print ('我们的数组是:')
print (a)
print ('\n')
print ('按 name 排序:')
print (np.sort(a, order = 'name'))
输出:
我们的数组是:
[[3 7][9 1]]调用 sort() 函数:
[[3 7][1 9]]按列排序:
[[3 1][9 7]]我们的数组是:
[(b'raju', 21) (b'anil', 25) (b'ravi', 17) (b'amar', 27)]按 name 排序:
[(b'amar', 27) (b'anil', 25) (b'raju', 21) (b'ravi', 17)]
numpy.argsort()
numpy.argsort() 函数返回的是数组值从小到大的索引值。
x = np.array([3, 1, 2])
print ('我们的数组是:')
print (x)
print ('\n')
print ('对 x 调用 argsort() 函数:')
y = np.argsort(x)
print (y)
print ('\n')
print ('以排序后的顺序重构原数组:')
print (x[y])
输出:
我们的数组是:
[3 1 2]对 x 调用 argsort() 函数:
[1 2 0]以排序后的顺序重构原数组:
[1 2 3]
sort_complex()
sort_complex()复数排序:
np.sort_complex([5, 3, 6, 2, 1])
输出:
array([ 1.+0.j, 2.+0.j, 3.+0.j, 5.+0.j, 6.+0.j])
np.sort_complex([1 + 2j, 2 - 1j, 3 - 2j, 3 - 3j, 3 + 5j])
输出:
array([ 1.+2.j, 2.-1.j, 3.-3.j, 3.-2.j, 3.+5.j])
partition()
partition() 分区排序:
a = np.array([3, 4, 2, 1])
np.partition(a, 3) # 将数组 a 中所有元素(包括重复元素)从小到大排列,3 表示的是排序数组索引为 3 的数字,比该数字小的排在该数字前面,比该数字大的排在该数字的后面
np.partition(a, (1, 3)) # 小于 1 的在前面,大于 3 的在后面,1和3之间的在中间
输出:
array([2, 1, 3, 4])
array([1, 2, 3, 4])
找到数组的第 3 小(index=2)的值和第 2 大(index=-2)的值:
arr = np.array([46, 57, 23, 39, 1, 10, 0, 120])
print(arr[np.argpartition(arr, 2)[2]])
print(arr[np.argpartition(arr, -2)[-2]])
输出:
10
57
argpartition()获得分区数值的索引
用 [2,3] 同时将第 3 和第 4 小的排序,然后通过下标 [2] 和 [3] 取得:
print(arr[np.argpartition(arr, [2,3])[2]])
print(arr[np.argpartition(arr, [2,3])[3]])
输出:
10
23
numpy.argmax() 和 numpy.argmin()
numpy.argmax() 和 numpy.argmin()函数分别沿给定轴返回最大和最小元素的索引。
a = np.array([[30,40,70],[80,20,10],[50,90,60]])
print ('我们的数组是:')
print (a)
print ('\n')
print ('调用 argmax() 函数:')
print (np.argmax(a))
print ('\n')
print ('\n')
print ('沿轴 0 的最大值索引:')
maxindex = np.argmax(a, axis = 0)
print (maxindex)
print ('\n')
print ('沿轴 1 的最大值索引:')
maxindex = np.argmax(a, axis = 1)
print (maxindex)
print ('\n')
print ('调用 argmin() 函数:')
minindex = np.argmin(a)
print (minindex)
print ('\n')
print ('数组中的最小值:')
print (a.flatten()[minindex])
print ('\n')
print ('沿轴 0 的最小值索引:')
minindex = np.argmin(a, axis = 0)
print (minindex)
print ('\n')
print ('沿轴 1 的最小值索引:')
minindex = np.argmin(a, axis = 1)
print (minindex)
输出:
我们的数组是:
[[30 40 70][80 20 10][50 90 60]]调用 argmax() 函数:
7沿轴 0 的最大值索引:
[1 2 0]沿轴 1 的最大值索引:
[2 0 1]调用 argmin() 函数:
5数组中的最小值:
10沿轴 0 的最小值索引:
[0 1 1]沿轴 1 的最小值索引:
[0 2 0]
numpy.nonzero()
numpy.nonzero() 函数返回输入数组中非零元素的索引。
a = np.array([[30,40,0],[0,20,10],[50,0,60]])
print ('我们的数组是:')
print (a)
print ('\n')
print ('调用 nonzero() 函数:')
print (np.nonzero (a))
输出:
我们的数组是:
[[30 40 0][ 0 20 10][50 0 60]]调用 nonzero() 函数:
(array([0, 0, 1, 1, 2, 2]), array([0, 1, 1, 2, 0, 2]))
numpy.where()
numpy.where() 函数返回输入数组中满足给定条件的元素的索引。
x = np.arange(9.).reshape(3, 3)
print ('我们的数组是:')
print (x)
print ( '大于 3 的元素的索引:')
y = np.where(x > 3)
print (y)
print ('使用这些索引来获取满足条件的元素:')
print (x[y])
输出:
我们的数组是:
[[0. 1. 2.][3. 4. 5.][6. 7. 8.]]
大于 3 的元素的索引:
(array([1, 1, 2, 2, 2]), array([1, 2, 0, 1, 2]))
使用这些索引来获取满足条件的元素:
[4. 5. 6. 7. 8.]
numpy.extract()
numpy.extract() 函数根据某个条件从数组中抽取元素,返回满条件的元素。.extract(condition, x)
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))
输出:
我们的数组是:
[[0. 1. 2.][3. 4. 5.][6. 7. 8.]]
按元素的条件值:
[[ True False True][False True False][ True False True]]
使用条件提取元素:
[0. 2. 4. 6. 8.]
学习Numpy(五)相关推荐
- 强化学习(五) - 时序差分学习(Temporal-Difference Learning)及其实例----Sarsa算法, Q学习, 期望Sarsa算法
强化学习(五) - 时序差分学习(Temporal-Difference Learning)及其实例 5.1 TD预测 例5.1 回家时间的估计 5.2 TD预测方法的优势 例5.2 随机移动 5.3 ...
- Emojify - v2 吴恩达老师深度学习第五课第二周编程作业2
吴恩达老师深度学习第五课第二周编程作业2,包含答案! Emojify! Welcome to the second assignment of Week 2. You are going to use ...
- OpenCV与图像处理学习十五——LBP纹理特征(含代码)
OpenCV与图像处理学习十五--LBP纹理特征(含代码) 一.LBP介绍 二.LBP原理 三.代码应用 一.LBP介绍 LBP(Local Binary Pattern, 局部二值模式) , 是一种 ...
- PyTorch框架学习十五——可视化工具TensorBoard
PyTorch框架学习十五--可视化工具TensorBoard 一.TensorBoard简介 二.TensorBoard安装及测试 三.TensorBoard的使用 1.add_scalar() 2 ...
- Pytorch深度学习(五):加载数据集以及mini-batch的使用
Pytorch深度学习(五):加载数据集以及mini-batch的使用 参考B站课程:<PyTorch深度学习实践>完结合集 传送门:<PyTorch深度学习实践>完结合集 一 ...
- opencv学习笔记五--文件扫描+OCR文字识别
opencv学习笔记五--文件扫描+OCR文字识别 文件扫描 定义函数 边缘检测 获取轮廓 变换 OCR文字识别 环境配置 代码 文件扫描 # 导入工具包 import numpy as np imp ...
- React Native小白入门学习路径——五
React Native小白入门学习路径--五 序 "哦天呐!" 这句话成了我在实验室的口头禅, 老师可能觉得我们都是大神吧,都还在看着基础就给布置了那么多任务:写一个RN的TDD ...
- Android Animation学习(五) ApiDemos解析:容器布局动画 LayoutTransition
Android Animation学习(五) ApiDemos解析:容器布局动画 LayoutTransition Property animation系统还提供了对ViewGroup中的View改变 ...
- Maven学习总结(五)——聚合与继承
2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(五)--聚合与继承 一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1. ...
- nginx学习总结五(nginx反向代理)
nginx学习总结五(nginx反向代理) 2011-02-28 12:59:33标签:反向代理nginx负载均衡 原创作 ...
最新文章
- usaco ★Zero Sum 和为零
- EMC设计中电缆屏蔽使用方法
- 又要头秃?2020年七大AI编程语言大盘点
- python tornado入门_Tornado入门
- 牛津教授揭秘AI革命及其前沿进展
- 使用宝塔面板部署tp5网站
- zabbix NFS挂载 监控模板
- 计算机专业学习资料总结(~持续更新中)
- FreeModbus源码获取
- 【MyBatis-Plus】第二章 条件构造器
- React Native 接入微博、微信、QQ 登录功能
- python sqlserver 数据操作_python上手--python操作数据库
- 小米格式化fastboot_小米fastboot刷机教程
- Python实现文件搜索
- MATLAB数字图像小系统
- VUE实战--网易云音乐
- 在matlab中ln10,ln函数(ln在函数中等于多少)
- 手把手带你 arduino 开发:基于ESP32S 的第一个应用-红外测温枪(带引脚图)
- 超实数与布尔巴基学派
- 面向对象—多态、鸭子类型(Day21)
热门文章
- Flutter Container 设置最大最小宽高
- node服务器接口不稳定,node服务部署到服务器后,数据接口404
- 计算方法:列主元消去法,LU分解法, 雅可比迭代法,高斯塞德尔迭代法 解线性方程(C++)
- 无关(relationship)
- 用百行Python代码写一个关于德州扑克的类
- PHP读和写Excel文件
- vue用户头像地址为““时,用姓名首字母做头像
- scrapy--Beautyleg
- 尚驰洗车:兰州高端洗车店精致洗车流程
- BZOJ 4380 Myjnie 区间DP