您当前的位置:首页 > 文章 > Numpy系统学习(四)数组元素操作

Numpy系统学习(四)数组元素操作

作者:Qodicat 时间:2024-10-31 阅读数:236 人阅读
主要涉及到数组元素的访问和修改
目录
1 切片索引
1.1 新生成索引数组切片
1.2 直接原数组上通过索引切片
1.2.1 一维数组的切片
1.2.2 多维数组的切片
2 高级索引
2.1 整形数组索引
2.2 布尔索引
1 切片索引
1.1 新生成索引数组切片
切片是通过内置的slice函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组,本质上是通过切片来实现索引。
如slice(2,8,2) 的含义是从2开始,到7,步长为2 因而也就得到2,4,6,我们通过slice得到需要的下标索引,进而通过索引得到对应的元素
例1:通过slice函数进行切片
a=np.array([1,3,5,7,9,11,13,15,17,18,19])
s=slice(2,8,2)
print(a[s])
输出
[ 5 9 13]
1.2 直接原数组上通过索引切片
通过冒号的形式进行分割,与之前类似,第一个数代表开始start,第二个数代表截止到哪里,end ,第三个数代表step步长
1.2.1 一维数组的切片
例2 通过冒号切片原Numpy数组
a=np.array([1,3,5,7,9,11,13,15,17,18,19])
b=a[2:8:2]
print(b)
输出
[ 5 9 13]
关于冒号的参数省略
如果只放置一个参数,如 [2],将返回与该索引相对应的单个元素。
如果只放置一个参数,如 [2],将返回与该索引相对应的单个元素。
如果只放置一个参数加冒号,如 [2:],表示从该索引开始以后,默认步长1,即该项以后的所有项都将被提取。
同理[:8] 表示从开始到7的所有项被提取
如果使用了两个参数,如 [2:7],那么则提取两个索引(不包括停止索引)之间的项。
例3 利用省略参数输出从开始到7号索引的所有项
import numpy as np
a = np.arange(10)
print(a[:7])
运行运行
输出
[0 1 2 3 4 5 6]
1.2.2 多维数组的切片
多维数组同样适用
例4 完成多维数组的切片
import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])
print(a)
# 从某个索引处开始切割
print('从数组索引 a[1:] 处开始切割')
print(a[1:])
输出
[[1 2 3]
[3 4 5]
[4 5 6]]
从数组索引 a[1:] 处开始切割
[[3 4 5]
[4 5 6]]
注意多维数组和一维数组的区别,这时候[1:] 代表[1,2,3] 整体的以后的所有数据
多维数组切片可以通过省略号...来进行 ,意味着所有的意思,通过这样的操作可以获得列
以2维数组为例,索引的第一个数字代表行,第二个数字代表列
则[..., 1],行索引由... 替代,即所有行的意思,而列是第2列元素,综合代表第2列的所有元素
同理 [2,...] 列索引由... 替代,即所有列的意思,而行是第3行元素,综合代表第3行的所有元素,下面通过一个例子来观察输出
例5 通过省略号来进行切片操作
import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])  
print(" 第2列元素")
print (a[...,1])   # 第2列元素
print(" 第2行元素")
print (a[1,...])   # 第2行元素
print("第2列及右边的所有元素")
print (a[...,1:])  # 第2列及右边的所有元素
输出
 第2列元素
[2 4 5]
 第2行元素
[3 4 5]
第2列及右边的所有元素
[[2 3]
 [4 5]
 [5 6]]
2 高级索引
2.1 整形数组索引
索引一般包含两个列表,第一个列表代表行,第二个列表代表列,按下图箭头方式一一对应
例1 获取数组中 (0,0),(1,1) 和 (2,0) 位置处的元素。
import numpy as np 
x = np.array([[1,  2],  [3,  4], [5,  6]])
y = x[[0,1,2],  [0,1,0]]  
print (y)
倘若只有一个列表,则代表行
例2 获取数组中第2,3行的元素
import numpy as np 
x = np.array([[1,  2],  [3,  4], [5,  6]])
y = x[[1,2]]  
print (y)
输出
[[3 4]
[5 6]]
例3 获取数组中0,1,2行的第2个元素
import numpy as np 
x = np.array([[1,  2],  [3,  4], [5,  6]])
y = x[[0,1,2], 1]
print (y)
输出
[2 4 6]
2.2 布尔索引
相当于我们可以加一个条件,筛选我们想要的元素
例2 筛选出数组中大于3的元素
x = np.array([[  0,  1,  2],[  3,  4,  5],[  6,  7,  8],[  9,  10,  11]])  
print ('我们的数组是:')
print (x)
print ('\n')
# 现在我们会打印出大于3 的元素  
print  ('大于 3 的元素是:')
print (x[x >  3])
输出
我们的数组是: [[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]]
大于 3 的元素是: [ 4 5 6 7 8 9 10 11]                        
原文链接:https://blog.csdn.net/Q52099999/article/details/128978915

本站大部分文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。

如果侵犯了您的权益请来信告知我们删除。邮箱:1451803763@qq.com