概述
如果数组是一维的,那么索引和切片就是和Python的列表是一样的
import numpy as np
# 一维数组的索引和切片
arr1 = np.arange(10) # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
## 进行索引操作
arr1[5] # 5
arr1[-1] # 9
## 进行切片操作
arr1[4:6] # array([4, 5])
arr1[::2] # array([0, 2, 4, 6, 8])
如果数组是多维的(这里以二维数组为例),那么在中括号[]中,给两个值,两个值是通过逗号,分隔的,逗号前面的是行,逗号后面的列;如果中括号[]中只有一个值,那么就是代表行
arr2
注意:arr2是随机的
import numpy as np
# 多维数组的索引和切片
arr2 = np.random.randint(0,10,size=(4,6))
# 获取第0行数据
arr2[0] # array([8, 8, 0, 0, 9, 2])
# 获取第1,2行数据
'''
array([[9, 2, 9, 7, 5, 0],
[6, 0, 8, 3, 4, 7]])
'''
arr2[1:3]
# 获取多行数据 例0,2,3行数据
'''
array([[8, 8, 0, 0, 9, 2],
[6, 0, 8, 3, 4, 7],
[2, 7, 6, 5, 0, 9]])
'''
arr2[[0,2,3]]
# 获取第2行第1列数据
arr2[2,1] # 0
# 获取多个数据 例第1行第4列、第2行第5列数据
arr2[[1,2],[4,5]] # array([5, 7])
# 获取多个数据 例第1、2行的第4、5列的数据
'''
array([[5, 0],
[4, 7]])
'''
arr2[1:3,4:6]
# 获取某一列数据 例第1列的全部数据
arr2[:,1] # array([8, 2, 0, 7])
# 获取多列数据 例第1、3列的全部数据
'''
array([[8, 0],
[2, 7],
[0, 3],
[7, 5]])
'''
arr2[:,[1,3]]
扩展补充知识: 布尔索引
布尔索引通过布尔运算(如:比较运算符)来获取符合指定条件的元素的数组
import numpy as np
# 生成1-24的4行6列的二维数组
arr = np.arange(24).reshape((4,6))
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
arr[arr < 10]
# array([ 0, 1, 2, 3, 4, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,23])
arr[(arr < 5)|(arr > 10)]
例1:获取大于5的元素
import numpy as np
arr = np.array([[0,1,2],[3,4,5],[6,7,8],[9,10,11]])
# 获取大于5的元素
# array([ 6, 7, 8, 9, 10, 11])
arr[arr > 5]
例2:过滤NaN
import numpy as np
arr = np.array([np.nan,1,2,np.nan,3,4,5])
# array([1., 2., 3., 4., 5.])
arr[~np.isnan(arr)]
例3:使用&连接两个条件,筛选大于5且小于10的元素
import numpy as np
arr = np.array([[0,1,2],[3,4,5],[6,7,8],[9,10,11]])
# 筛选大于5且小于10的元素
# array([6, 7, 8, 9])
arr[(arr > 5) & (arr < 10)]
提示
1.布尔索引是通过相同数据上的True和False来进行提取的
2.提取条件可以为一个或多个,当提取条件为多个时使用&代表且,使用|代表或
3.当提取条件为多个时,每个条件要使用圆括号括起来
最后
以上就是虚拟母鸡为你收集整理的[Numpy] 数组索引和切片的全部内容,希望文章能够帮你解决[Numpy] 数组索引和切片所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复