Python-Numpy学习笔记之索引
文章目录基础索引一维数组的索引二维数组的索引神奇索引一维数组的索引二维数组的索引布尔索引一维数组的索引二维数组的索引条件的组合导入模块创建两个用于实验的数组```pythonimport numpy as npx=np.arange(10)#定义一个一维数组X=np.arange(15).reshape(3,5)#定义一个三行五列的二维数组```基础索引一维数组的索引类似于python中list的
·
导入模块创建两个用于实验的数组
import numpy as np
x=np.arange(10)#定义一个一维数组
X=np.arange(15).reshape(3,5)#定义一个三行五列的二维数组
基础索引
一维数组的索引
类似于python中list的索引
print(x)
print(x[0],x[3],x[4])#索引指定下标的内容
print(x[2:4])#切片,索引指定范围下标的内容
print(x[:4])#切片
print(x[3:])#切片
print(x[2:-1])#切片
print(x[-1])#切片
print(x[:-1])#切片
运行结果:
二维数组的索引
print(X)
print(X[0,1])#分别用行坐标和纵坐标,实现行列的筛选
print(X[2])#省略后续索引值,返回数据为降低一个维度的数组,筛选第二行(第0行为起始)
print(X[:2])#筛选多行,左闭右开
print(X[:2,2:4])#先筛选多行,再筛选多列
print(X[:,2])#筛选所有行,在筛选多列
运行结果:
注意:切片会改变数组原来的值,因为Numpy经常要处理大数组,避免每次重复
如:
print(x)
x[2:4]=520
print(x)
X[:2,1:3]=520
print(X)
运行结果:
神奇索引
就是用整数数组进行索引
一维数组的索引
print(x)
index=np.array([[0,2],[1,3]])#索引x中的[0,2]和[1,3]元素构成的数组
print(x[index])
运行结果:
例子:获取数组中最大的前n个数字
arr=np.random.randint(1,100,10)#随机生成1-100之间的,10个数字
print(arr)
print(arr.argsort())#arr.argsort()会返回排序(从小到大)后的索引index
print(arr.argsort()[-3:])#取最大值对应的三个下标
print(arr[arr.argsort()[-3:]])#取最大值对应的三个值
运行结果:
二维数组的索引
arr2=np.random.randint(1,100,(4,5))#随机生成1-100之间的,四行五列的数组
print(arr2)
print(arr2[[0,2]])#筛选多行(0和2行),列可以省略
print(arr2[[0,2],3])#筛选0行3列,2行3列值
print(arr2[:,[0,1,3]])#晒选多列,行不能省略
print(arr2[[0,2,3],[2,3,4]])#查询0行2列,2行3列,3行4列的值,行列值个数要对应,否则报错
运行结果:
布尔索引
注意:布尔索引选择的数据是数组的拷贝
一维数组的索引
print(x)
print(x>5)#索引x>5的值,并用布尔值返回
print(x[x>5])#索引出x>5的元素
x[x<5]+=20#将小于5的值加上20
print(x)
运行结果:
例子:把一堆数组进行01化处理,用于实际问题简单化
print(x)
x[x<5]=0#将x小于5的用0表示
x[x>=5]=1#将x大于等于5的用1表示
print(x)
运行结果:
二维数组的索引
print(X)
print(X>5)#X>5是布尔型数组,既有行,也有列,因此返回的是(行,列)一堆结果
print(X[X>5])#索引出大于5的元素值
运行结果:
例子:把第三列大于五的行筛选出来
print(X)
print(X[X[:,3]>5])
print(X)
运行结果:
将大于5的元素赋其他值
X[X[:,3]>5]=520#将第三列大于5的所有行赋值520
print(X)
print(X[X[:,3]>5])
运行结果:
条件的组合
注意:每个条件都得加小括号
print(x)
condition1=(x%2==0)&(x>5)#x整除2且x>5
condition2=(x%3==1)|(x<4)#x除3的余数为1或x<4
print(x[condition1])
print(x[condition2])
运行结果:
整理不易,看完请点个赞吧=-=!
更多推荐
已为社区贡献2条内容
所有评论(0)