栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

numpy的索引和切片(基础和高级和布尔三种使用方法)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

numpy的索引和切片(基础和高级和布尔三种使用方法)

1.numpy的索引 一维数组基础索引

正向递增,反向递减

    语法:np01[index]

   根据索引查询:np01[index]

   根据索引修改数据:np01[index]=值

np04=np.array([2,5,4,6,7,8,3,2,68,9])
print(np04[4])#7
 一维数组高级索引

语法:  

    np01[索引数组]

np01=np.array([9,8,7,6,5,4,3,2,1,0])
print("---------高级索引----------------")
index01=np.array([1,5,8])#   索引数组==先把要求几个数的索引创建为数组 
print(np01[index01])#[8 4 1]
 一维数组的布尔索引

 1.利用布尔索引获取值:False:不获取  True:获取

           2.和比较运算符结合使用

np01=np.array([9,-4,3,-8,2])

print("布尔索引")
index_01=np.array([False,False,True,False,False])
print(np01[index_01])#-8  
print(np01<0)
#要所有小于0的
index_02=np.array([False,False,True,False,False])
boolean_index=np01<0
print(boolean_index)#[False  True False  True False]
print(np01[boolean_index])#[-4 -8]

 

二维数组基础索引

    语法:np01[行][列]

    查询和修改数据

list01=[
    [3,4,6,8,2],
    [8,4,2,44,63],
    [3,45,67,78,8],
    [35,4,67,7,88]
]
np05=np.array(list01)
print(np05[3][3])#7
 二维数组的高级索引

语法:

    数组:np01[行索引数组,列索引数组]

    列表:np01[list,list]

    混合:np01[list,数组]   [数组,list]

np02=np.arange(5,25).reshape(4,5)#创建二维数组
print(np02)
'''
[[ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]
 [20 21 22 23 24]]'''
print("-----1----高级索引---使用数组-------------")
row_index=np.array([0,1,2,3])
col_index=np.array([1,2,3,4])
print(np02[row_index,col_index])#[ 6 12 18 24]
print("-----2----高级索引---使用列表-------------")
row_list=[0,1,2,3]
col_list=[1,2,3,4]
print(np02[row_list,col_list])#[ 6 12 18 24]
print("-----3----高级索引---混合使用-------------")
print(np02[row_list,col_index])#[ 6 12 18 24]
print(np02[row_index,col_list])#[ 6 12 18 24]
 二维数组的布尔索引

1。np.ix_()计算笛卡尔乘积

        2.np01[笛卡尔乘积]

np02=np.arange(5,25).reshape(4,5)
print(np02)
'''[[ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]
 [20 21 22 23 24]]'''
print("----------基础所引------------")
print(np02[0:2,1:4])
print("-----------布尔索引------------------")
row_index=np.array([True,True,False,False])#4行
col_index=np.array([False,True,True,True,False])#5列
boolean01=np.ix_(row_index,col_index)#笛卡尔乘积
print(np02[boolean01])
'''[[ 6  7  8]
 [11 12 13]]'''
#创建一个随机数组,取里面大于5的所有数
np03=np.random.randint(20,size=(4,5))
print(np03) 
"""[[11  2  0  3 19]
 [ 3  3 17 14 14]
 [17  6  2  6  7]
 [16 12  5  1 16]]"""
boolean_index02=np03>5
print(np03[boolean_index02])
print("==========================")
2.numpy的切片 一维数组基础切片

语法:np01[index01 : index02]    左开右闭

正向递增,反向递减,

一正一负,一负一正  都可以

np04=np.array([2,5,4,6,7,8,3,2,68,9])
print(np04)#[11  5  4  6  7  8  3  2 68  9]
print(np04[2:7])#[4 6 7 8 3]
print(np04[2:-3])#[4 6 7 8 3]
print(np04[-8:7])#[4 6 7 8 3]
print(np04[-8:-3])#[4 6 7 8 3]
二维数组基础切片

语法:np01[行01:行02,列01:列02]      左开右闭

    要查询所有行或者所有列,直接不写列和行

list01=[
    [3,4,6,8,2],
    [8,4,2,44,63],
    [3,45,67,78,8],
    [35,4,67,7,88]
]
np05=np.array(list01)

print(np05[1:3,1:3])
'''[[ 4  2]
 [45 67]]'''
高级切片 

语法:

          np01[元组,切片]  eg:np04[tuple01,1:5]

需要哪一行元组里面就放哪一行

np04=np.arange(20).reshape(4,5)
print(np04)
'''[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]]'''
print("------------基础切片----------------")
print(np04[0:2,1:5])
'''[[1 2 3 4]
 [6 7 8 9]]'''
print("--------------高级切片---------------------")
tuple01=(0,1)
print(np04[tuple01,1:5])
'''[[1 2 3 4]
 [6 7 8 9]]'''
tuple02=(0,1)
print(np04[tuple01,1:3])
"""[[1 2]
 [6 7]]"""

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/589156.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号