首页 > 其他分享 >NumPy学习5

NumPy学习5

时间:2023-05-30 20:33:55浏览次数:37  
标签:numpy 元素 学习 np arr4 数组 print NumPy

今天学习了
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,元素,学习,np,arr4,数组,print,NumPy
From: https://www.cnblogs.com/xh2023/p/17444321.html

相关文章

  • MySQL学习进阶篇Day5
    2.6.4索引失效情况2.6.4.1索引列运算不要在索引列上进行运算操作,索引将失效。 在tb_user表中,除了前面介绍的联合索引之外,还有一个索引,是phone字段的单列索引。 A.当根据phone字段进行等值匹配查询时,索引生效。explainselect*fromtb_userwherephone='1779......
  • 小灰灰深度学习day5——数据预处理
    内容简介:1.将数据写入.csv文件中    2.将数据从.csv文件中读出  3.利用插值法处理缺失的数据  4.将数据类型转化为torch张量类型代码如下:importosos.makedirs(os.path.join('..','data'),exist_ok=True)data_file=os.path.join('..','data','house_......
  • 在树莓派上实现numpy的conv2d卷积神经网络做图像分类,加载pytorch的模型参数,推理mnist
    这几天又在玩树莓派,先是搞了个物联网,又在尝试在树莓派上搞一些简单的神经网络,这次搞得是卷积识别mnist手写数字识别训练代码在电脑上,cpu就能训练,很快的:importtorchimporttorch.nnasnnimporttorch.optimasoptimfromtorchvisionimportdatasets,transformsimportn......
  • uniapp专题学习(二)
    前言书接上回,我们学习了uniapp的基本概念、用处、vue语法在uniapp中的使用、page.json的全局配置和局部配置以及组件的使用。本节我们将继续学习uniapp组件。uniapp组件学习viedo视频播放组件。常用属性:src、autoplay、loop、muted,详情请查看viedo组件案例代码:<template> ......
  • docker学习笔记:docker常见网络类型及使用
    docker网络类型四类网络模式Docker网络模式配置说明host模式–net=host容器和宿主机共享Networknamespace。container模式–net=container:NAME_or_ID容器和另外一个容器共享Networknamespace。kubernetes中的pod就是多个容器共享一个Networknamespace。......
  • 继续学习英语20230530
    Simplyput简单来说 isolated 英[ˈaɪsəleɪtɪd]美[ˈaɪsəleɪtɪd]adj.偏远的;孤零零的;孤独的;孤立的;单独的;只出现一次的;v.(使)隔离,孤立,脱离;将…剔出(以便看清和单独处理);使(某物质、细胞等)分离;使离析; leverages英[ˈliːvərɪdʒɪz]......
  • clickhouse学习资源
    ClickHouse是一个开源的列式数据库管理系统,最初由俄罗斯搜索引擎Yandex开发。它专为OLAP(联机分析处理)场景设计,可以快速处理大量数据。以下是一些ClickHouse学习资源:ClickHouse官方文档:https://clickhouse.tech/docs/zh/ClickHouse中文文档:https://clickhouse-docs-cn.......
  • 新版idea快捷键总结学习----(用于java开发模式)
    选择代码区ctrlw如果放到以if开头的语句,可以选择if判断条件所在的代码片段游标在单个单词下时选择单词在选中多个单词时,选择整个字符串三次点击时,如果不在字符串单词下,用于选择{}内的代码片段逐级递增如果在单词下方,用于选择单词所在的字符串并且向外逐级扩展。ctrl......
  • 在树莓派上使用numpy实现简单的神经网络推理,pytorch在服务器或PC上训练好模型保存成nu
    这几天又在玩树莓派,先是搞了个物联网,又在尝试在树莓派上搞一些简单的神经网络,这次搞得是mlp识别mnist手写数字识别训练代码在电脑上,cpu就能训练,很快的:1importtorch2importtorch.nnasnn3importtorch.optimasoptim4fromtorchvisionimportdatasets,transfor......
  • Java入门学习必备工具-OneNote笔记
    俗话说:“好记性不如烂笔头”,不得不说,这句话在大部分时候都是适用的。特别是刚入门学习java的小白们,记笔记是非常实用的学习方法也可直接观看视频学习如何使用笔记工具,b站上动力节点老杜最新Java17版教程,从零基础出发,讲解Java编程的基础知识和实践技巧,涵盖了Java编程的方方面面......