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

主要涉及到数组元素的访问和修改

目录

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]

---------------------------------------相关文章快速跳转----------------------------------------

Numpy系列

Numpy系统学习(一)Numpy数组介绍数组的秩Qodi的博客-CSDN博客

Numpy系统学习(二)Numpy的数据类型_Qodi的博客-CSDN博客

Numpy系统学习(三)创建Ndarray数组对象创建ndarray对象Qodi的博客-CSDN博客

Numpy系统学习(四)数组元素操作_Qodi的博客-CSDN博客

Numpy系统学习(五)数组元素运算numpy 取反Qodi的博客-CSDN博客

Pandas系列

Pandas系统学习(一)基本数据结构pandas架构Qodi的博客-CSDN博客

pandas系统学习(二)数据处理.md_Qodi的博客-CSDN博客

pytorch系列

从原理到实践 | Pytorch tensor 张量花式操作_Qodi的博客-CSDN博客

pytorch的自动微分、计算图 | 代码解析_Qodi的博客-CSDN博客

从原理到代码实践 | pytorch损失函数_Qodi的博客-CSDN博客

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值