主要涉及到数组元素的访问和修改
目录
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
常见问题
- 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情
相关文章
猜你喜欢
