NumPy学习5
今天学习了
11, NumPy数组元素增删改查
NumPy 数组元素的增删改查操作,主要有以下方法:
数组元素操作方法
函数名称 描述说明
resize 返回指定形状的新数组。
append 将元素值添加到数组的末尾。
insert 沿规定的轴将元素值插入到指定的元素前。
delete 删掉某个轴上的子数组,并返回删除后的新数组。
argwhere 返回数组内符合条件的元素的索引值。
unique 用于删除数组中重复的元素,并按元素值由大到小返回一个新数组。
numpy_test5.py :
import numpy as np '''
11, NumPy数组元素增删改查
NumPy 数组元素的增删改查操作,主要有以下方法: 数组元素操作方法
函数名称 描述说明
resize 返回指定形状的新数组。
append 将元素值添加到数组的末尾。
insert 沿规定的轴将元素值插入到指定的元素前。
delete 删掉某个轴上的子数组,并返回删除后的新数组。
argwhere 返回数组内符合条件的元素的索引值。
unique 用于删除数组中重复的元素,并按元素值由大到小返回一个新数组。
''' '''
(1). numpy.resize()
numpy.resize() 返回指定形状的新数组。
numpy.resize(arr, shape)
'''
print("----(1). numpy.resize()----")
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
print("arr1:", arr1)
# arr1数组的形状
print("arr1数组的形状:", arr1.shape)
arr2 = np.resize(arr1, (3, 2))
# arr2数组
print("arr2:", arr2)
# arr2数组的形状
print("arr2数组的形状:", arr2.shape)
# 修改 arr3 数组使其形状大于原始数组
arr3 = np.resize(arr1, (3, 3))
print("arr3:", arr3)
'''
arr1: [[1 2 3]
[4 5 6]]
arr1数组的形状: (2, 3)
arr2: [[1 2]
[3 4]
[5 6]]
arr2数组的形状: (3, 2)
arr3: [[1 2 3]
[4 5 6]
[1 2 3]] 区别 resize() 和 reshape() 的使用方法,它们看起来相似,实则不同。
resize 仅对原数组进行修改,没有返回值.
而 reshape 不仅对原数组进行修改,同时返回修改后的结果。
'''
arr4 = np.arange(12)
print("arr4:", arr4)
# 调用resize方法
arr4_resize = arr4.resize(2, 3, 2)
print("调用resize方法后,arr4:", arr4)
# 返回None使用print打印
print("arr4_resize:", arr4_resize) # 调用reshape方法
arr4_shape = arr4.reshape(2, 3, 2)
print("调用reshape方法后,arr4:", arr4)
# 返回修改后的数组
print("arr4_shape:", arr4_shape)
'''
arr4: [ 0 1 2 3 4 5 6 7 8 9 10 11]
调用resize方法后,arr4: [[[ 0 1]
[ 2 3]
[ 4 5]] [[ 6 7]
[ 8 9]
[10 11]]]
arr4_resize: None
调用reshape方法后,arr4: [[[ 0 1]
[ 2 3]
[ 4 5]] [[ 6 7]
[ 8 9]
[10 11]]]
arr4_shape: [[[ 0 1]
[ 2 3]
[ 4 5]] [[ 6 7]
[ 8 9]
[10 11]]]
''' '''
(2). numpy.append()
在数组的末尾添加值,它返回一个一维数组。
numpy.append(arr, values, axis=None) 参数说明:
arr:输入的数组;
values:向 arr 数组中添加的值,需要和 arr 数组的形状保持一致;
axis:默认为 None,返回的是一维数组;当 axis =0 时,追加的值会被添加到行,而列数保持不变,
若 axis=1 则与其恰好相反,追加的值会被添加到列,而行数保持不变。
'''
print("----(2). numpy.append()----")
arr5 = np.array([[1, 2, 3], [4, 5, 6]])
print("arr5:", arr5)
# 向数组 arr5 添加元素
arr6 = np.append(arr5, [7, 8, 9])
print("arr6:", arr6)
# 沿轴 0 添加元素
arr7 = np.append(arr5, [[7, 8, 9]], axis=0)
print("arr7:", arr7)
# 沿轴 1 添加元素
arr8 = np.append(arr5, [[4, 5, 6], [7, 8, 9]], axis=1)
print("arr8:", arr8)
'''
arr5: [ [1 2 3]
[4 5 6] ]
arr6: [1 2 3 4 5 6 7 8 9]
arr7: [ [1 2 3]
[4 5 6]
[7 8 9] ]
arr8: [ [1 2 3 4 5 6]
[4 5 6 7 8 9] ]
''' '''
(3). numpy.insert()
表示沿指定的轴,在给定索引值的前一个位置插入相应的值,如果没有提供轴,则输入数组被展开为一维数组。
numpy.insert(arr, obj, values, axis) 参数说明:
arr:要输入的数组
obj:表示索引值,在该索引值之前插入 values 值;
values:要插入的值;
axis:默认为 None,返回的是一维数组;当 axis =0 时,追加的值会被添加到行,而列数保持不变,
若 axis=1 则与其恰好相反,追加的值会被添加到列,而行数保持不变。
'''
print("----(3). numpy.insert()----")
arr9 = np.array([[1, 2], [3, 4], [5, 6]])
print("arr9:", arr9)
# 不提供axis的情况,会将数组展开
arr10 = np.insert(arr9, 3, [7, 8])
print("arr10:", arr10)
# 沿轴 0 垂直方向
arr11 = np.insert(arr9, 1, [7], axis=0)
print("arr11:", arr11)
# 沿轴 1 水平方向
arr12 = np.insert(arr9, 1, 7, axis=1)
print("arr12:", arr12)
'''
arr9: [ [1 2]
[3 4]
[5 6] ]
arr10: [1 2 3 7 8 4 5 6]
arr11: [[1 2]
[7 7]
[3 4]
[5 6]]
arr12: [[1 7 2]
[3 7 4]
[5 7 6]]
''' '''
(4). numpy.delete()
该方法表示从输入数组中删除指定的子数组,并返回一个新数组。
它与 insert() 函数相似,若不提供 axis 参数,则输入数组被展开为一维数组。
numpy.delete(arr, obj, axis) 参数说明:
arr:要输入的数组;
obj:整数或者整数数组,表示要被删除数组元素或者子数组;
axis:沿着哪条轴删除子数组。
'''
print("----(4). numpy.delete()----")
arr13 = np.arange(12).reshape(3, 4)
print("arr13:", arr13)
# 不提供axis参数情况
arr14 = np.delete(arr13, 5)
print("arr14:", arr14)
# 删除第2列
arr15 = np.delete(arr13, 1, axis=1)
print("arr15:", arr15)
# 删除经切片后的数组
arr16 = np.arange(10)
print("arr16:", arr16)
# np.s_[::2],保留数组的偶数位置元素
arr17 = np.delete(arr16, np.s_[::2])
print("arr17:", arr17)
'''
arr13: [[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
arr14: [ 0 1 2 3 4 6 7 8 9 10 11]
arr15: [[ 0 2 3]
[ 4 6 7]
[ 8 10 11]]
arr16: [0 1 2 3 4 5 6 7 8 9]
arr17: [1 3 5 7 9]
''' '''
(5). numpy.argwhere()
该函数返回数组中非 0 元素的索引,若是多维数组则返回行、列索引组成的索引坐标。
'''
print("----(5). numpy.argwhere()----")
arr18 = np.arange(9).reshape(3, 3)
print("arr18:", arr18)
# 返回所有大于 3 的元素索引,返回行列索引坐标
arr19 = np.argwhere(arr18 > 3)
print("arr19:", arr19)
'''
arr18: [[0 1 2]
[3 4 5]
[6 7 8]]
arr19: [[1 1]
[1 2]
[2 0]
[2 1]
[2 2]]
''' '''
(6). numpy.unique()
用于删除数组中重复的元素,其语法格式如下:
numpy.unique(arr, return_index, return_inverse, return_counts) 参数说明:
arr:输入数组,若是多维数组则以一维数组形式展开;
return_index:如果为 True,则返回新数组元素在原数组中的位置(索引);
return_inverse:如果为 True,则返回原数组元素在新数组中的位置(索引);
return_counts:如果为 True,则返回去重后的数组元素在原数组中出现的次数。
'''
print("----(6). numpy.unique()----")
arr20 = np.array([3, 2, 3, 2, 7, 5, 6, 8, 5, 9])
print("arr20:", arr20)
# 对arr20数组的去重
arr20_unique = np.unique(arr20)
print("arr20_unique:", arr20_unique)
# 数组去重后的索引数组
arr20_unique, indices = np.unique(arr20, return_index=True)
# 返回新数组元素在原数组中的位置(索引)
print("indices:", indices)
# 去重数组的下标
arr20_unique, inverse = np.unique(arr20, return_inverse=True)
# 返回原数组元素在新数组中的位置(索引)
print("inverse:", inverse)
# 返回去重元素的重复数量
arr20_unique, counts = np.unique(arr20, return_counts=True)
# 返回去重后的数组元素在原数组中出现的次数
print("counts:", counts)
'''
arr20: [3 2 3 2 7 5 6 8 5 9]
arr20_unique: [2 3 5 6 7 8 9]
indices: [1 0 5 6 4 7 9]
inverse: [1 0 1 0 4 2 3 5 2 6]
counts: [2 2 2 1 1 1 1]
'''
NumPy学习5的更多相关文章
- NumPy学习笔记 三 股票价格
NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...
- NumPy学习笔记 二
NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...
- NumPy学习笔记 一
NumPy学习笔记 一 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...
- 数据分析之Pandas和Numpy学习笔记(持续更新)<1>
pandas and numpy notebook 最近工作交接,整理电脑资料时看到了之前的基于Jupyter学习数据分析相关模块学习笔记.想着拿出来分享一下,可是Jupyter导出来h ...
- NumPy学习(索引和切片,合并,分割,copy与deep copy)
NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片 合并 分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程 ...
- NumPy学习(让数据处理变简单)
NumPy学习(一) NumPy数组创建 NumPy数组属性 NumPy数学算术与算数运算 NumPy数组创建 NumPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型. 它描述相同 ...
- numpy 学习笔记
numpy 学习笔记 导入 numpy 包 import numpy as np 声明 ndarray 的几种方法 方法一,从list中创建 l = [[1,2,3], [4,5,6], [7,8,9 ...
- numpy 学习总结
numpy 学习总结 作者:csj更新时间:01.09 email:59888745@qq.com 说明:因内容较多,会不断更新 xxx学习总结: 回主目录:2017 年学习记录和总结 #生成数组/使 ...
- (转)Python数据分析之numpy学习
原文:https://www.cnblogs.com/nxld/p/6058572.html https://morvanzhou.github.io/tutorials/data-manipulat ...
- Numpy学习1
NumPy学习(1) 参考资料: http://www.cnblogs.com/zhanghaohong/p/4854858.html http://linusp.github.io/2016/02/ ...
随机推荐
- error C2589: “(”:“::”右边的非法标记错误的处理
问题:error C2589: "(":"::"右边的非法标记错误的处理 标准库在<algorithm>头中定义了两个模板函数std::min() ...
- Solution -「洛谷 P8477」 「GLR-R3」春分 下界证明?!
前情提要:在「洛谷 P8477」 「GLR-R3」春分中,我们给出了 \(\frac{7}{6}n\pm\mathcal O(1)\) 的解法,但没能给出相关的下界证明.现在我们尝试给出一个未完全 ...
- Python串口实现dk-51e1单相交直流标准源通信
Python实现dk-51e1单相交直流标准源RS232通信 使用RS232,信号源DK51e1的协议帧格式如下: 注意点 配置串口波特率为115200 Check异或和不需要加上第一个0x81的字段 ...
- 十四款常见的Web前端开发框架
在做web开发的时候经常会遇到一个问题,那就是,选择什么样的框架来做前端开发.下面封程中把目前常用的一些前端的框架简单的给大家介绍一下. 1. BootstrapBoostrap绝对是目前最流行用得最 ...
- runoob-Android 基础入门教程-1
https://www.runoob.com/w3cnote/android-tutorial-interface-design.html 公司的话,大部分使用的都是Axure Rp,但是这个东西比较 ...
- 从0到1构建开源 vue-uniapp-template:使用 UniApp + Vue3 + TypeScript 和 VSCoe、CLI 开发跨平台移动端脚手架
作者主页: 有来技术 开源项目: youlai-mall︱vue3-element-admin︱youlai-boot︱vue-uniapp-template 仓库主页: GitCode︱ Gitee ...
- Vite构建项目记录
背景 微信推送了一些公众号文章,所 vite 已经跟新到 v6 版本了,于是构建一个 vite 项目看下啥变化 过程 直接打开 https://vite.dev/ 官网,切换问中文语言,找到此处 ht ...
- css漂亮的弧形
我们有时会遇到要用实现一个弧形,而这样的弧形要怎么实现呢? 用图片?好像不大现实,因为这样就要无故多加载一张图片了 ,这里我们来说说怎么用css的after伪类来实现弧形. 如果想要调整弧度的话,可以 ...
- 探索未来之路,激发AI创新活力!“天翼云息壤杯”高校AI大赛北京区域赛开赛!
近年来,人工智能发展速度之快.辐射范围之广令人瞩目.今年的<政府工作报告>提出,深化大数据.人工智能等研发应用,开展"人工智能+"行动.AI充满了无限可能和潜力,未来还 ...
- 开源数据库生态遇新变数,天翼云TeleDB提供企业数据管理更优解!
近日,知名开源大规模并行处理 (MPP) 数据库Greenplum的源代码在其官方GitHub页面突然消失,引发了用户和开发者的广泛关注, PostgreSQL生态系统或将产生新变数.开源软件在面对商 ...