我是靠谱客的博主 虚拟母鸡,最近开发中收集的这篇文章主要介绍[Numpy] 数组索引和切片,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

美图欣赏2022/07/27

如果数组是一维的,那么索引和切片就是和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] 数组索引和切片所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部