今天学习了
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的更多相关文章

  1. NumPy学习笔记 三 股票价格

    NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...

  2. NumPy学习笔记 二

    NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  3. NumPy学习笔记 一

    NumPy学习笔记 一 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  4. 数据分析之Pandas和Numpy学习笔记(持续更新)<1>

    pandas and numpy notebook        最近工作交接,整理电脑资料时看到了之前的基于Jupyter学习数据分析相关模块学习笔记.想着拿出来分享一下,可是Jupyter导出来h ...

  5. NumPy学习(索引和切片,合并,分割,copy与deep copy)

    NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片 合并 分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程 ...

  6. NumPy学习(让数据处理变简单)

    NumPy学习(一) NumPy数组创建 NumPy数组属性 NumPy数学算术与算数运算 NumPy数组创建 NumPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型. 它描述相同 ...

  7. numpy 学习笔记

    numpy 学习笔记 导入 numpy 包 import numpy as np 声明 ndarray 的几种方法 方法一,从list中创建 l = [[1,2,3], [4,5,6], [7,8,9 ...

  8. numpy 学习总结

    numpy 学习总结 作者:csj更新时间:01.09 email:59888745@qq.com 说明:因内容较多,会不断更新 xxx学习总结: 回主目录:2017 年学习记录和总结 #生成数组/使 ...

  9. (转)Python数据分析之numpy学习

    原文:https://www.cnblogs.com/nxld/p/6058572.html https://morvanzhou.github.io/tutorials/data-manipulat ...

  10. Numpy学习1

    NumPy学习(1) 参考资料: http://www.cnblogs.com/zhanghaohong/p/4854858.html http://linusp.github.io/2016/02/ ...

随机推荐

  1. Qt数据库应用10-通用数据库设置

    一.前言 做过了众多的项目,只要是用了数据库的项目,基本上还有一个需求就是,提供一个界面用来初始化数据库,相当于恢复出厂设置的数据,一般恢复出厂设置需要复位的是配置文件.数据库文件.布局文件这几种,其 ...

  2. Qt编写地图综合应用42-离线轮廓图

    一.前言 离线轮廓图使用起来,就没有在线轮廓图方便了,在线的可以直接传入名称拿到,离线的只能自己绘制了,一般需要用区域轮廓图下载器将你需要的区域下载好对应的js文件,其实就是一堆坐标点集合数组,这些数 ...

  3. Qt编写地图综合应用40-覆盖物弧线

    一.前言 弧线可以用来指示某几个点直接弧形的方式绘制线条,尤其是飞机轨迹,起点到终点弧形曲线展示,更美观.百度地图的折线图.矩形图.圆形图等,都统称覆盖物,都是作为覆盖物绘制上去的,这样的好处是速度很 ...

  4. vue el-select封装一个滚动加载更多下拉选项的自定义指令

    没有什么讲究,直接上代码 模板部分 <el-select v-model="operator" filterable remote size="small" ...

  5. Solution Set -「PTS Simus」“待天地再静默一秒”

    目录 03.11 A. 太阳照常升起 (exam) B. 丧钟为谁而鸣 (exam) C. 老人与海 (exam) 03.12 A. 「计蒜客 #42547」Yuuki and a problem B ...

  6. Solution Set -「LOCAL」冲刺省选 Round XXVII

    \(\mathscr{Summary}\)   还行,B 题挺不错,C 题就省选来说有点水(? \(\mathscr{Solution}\) \(\mathscr{A-}\) 分裂   初始时,你有一 ...

  7. [Java] 计算Java对象大小

    序 在Java应用程序的性能优化场景中,时常需要考虑Java对象的大小,以便评估后,进一步提出优化方案: 占用内存的大小.(比如 本地内存) 对象数据在网络传输中占用的网络带宽 对象数据在存储时占用的 ...

  8. org.junit.Assert

    引入包,以下两种方式都是OK的,看个人喜好,我倾向于使用第二种,会更加清晰直观.下面的代码我都会用第二种 import static org.junit.Assert.*; import org.ju ...

  9. Hbase shell学习

    通过Shell工具可以对云数据库HBase进行数据管理,包括建表.插入数据.删除数据和删除表等操作,本文介绍Shell的基本使用命令. 访问配置 如果使用的是云数据库HBase标准版,基本环境的配置操 ...

  10. w3cschool-Netty 实战精髓篇2

    https://www.w3cschool.cn/essential_netty_in_action/essential_netty_in_action-adkv28bm.html 研究Netty中的 ...