Numpy的切片与索引

Numpy的切片与索引

ndarray对象内容可以通过索引或切片来访问和修改。
索引方法类型:字段访问;基本切片;高级索引。

存取元素

  • Numpy数组元素的存取方法和Python序列型数据的索引切片方法相同。
>>>import numpy as np
>>>a=np.arange(10)
>>>a

在这里插入图片描述

a[5]   #用整数作为下标可以获取数组中的某个元素

在这里插入图片描述

a[3:5]      #用范围作为下标可以获取数组的一个切片,包括a[3]不包括a[5]

在这里插入图片描述

a[:-1]

在这里插入图片描述

a[2:4]=100,101          #下标可用于修改元素的值
a

在这里插入图片描述

print(a[1:-1:2])

在这里插入图片描述

  • 和python的列表序列不同,通过下标范围获取的新的数组是原始数组的一个视图,它与原始数组共享一块数据空间
print(a)
b=a[3:7]
print(b)
b[2]=-10      #将b的第二个元素修改为-10
print(b)
print(a)

在这里插入图片描述

s=[3,2,1,5,6,7,8,9]
t=s[1:5]
t[0]=999
print(t)
print(s)

在这里插入图片描述

数据的“深浅拷贝”

存取元素中的“浅拷贝”与“深拷贝”
  • 整数序列
    当使用整数序列对数组元素进行存取时,将整数序列中的每个元素作为下标,整数序列可以是列表或者数组。使用整数序列作为下标获得的数组不和原始数组共享数据空间
>>>x=np.arange(10,1,-1)
>>>x
array([10,  9,  8,  7,  6,  5,  4,  3,  2])
>>>x[[3,3,1,8]]         #获取x中下标为3,3,1,8的四个元素,组成一个新的数组
array([7, 7, 9, 2])
>>>b=x[np.array([3,3,-3,8])]
>>>b
array([7, 7, 4, 2])
>>>b[2]=100
>>>b
array([  7,   7, 100,   2])
>>>x          #x和b不共享数据空间,所以x值不变
array([10,  9,  8,  7,  6,  5,  4,  3,  2])
>>>x[[3,5,1]]=-1,-2,-3    #修改下标为3,5,1的数据为-1,-2,-3
>>>x
array([10, -3,  8, -1,  6, -2,  4,  3,  2])
  • 布尔数组
    当时用布尔数组b作为下表存取数组x中的元素时,将收集数组x中所有在数组b中对应为True的元素。使用布尔数组作为下标获得的数组不和原始数组共享数据空间这种方式只对应于布尔数组,不能使用布尔列表。
>>>x=np.arange(5,0,-1)
>>>x
array([5, 4, 3, 2, 1])
>>>x=[np.array([True,False,True,False,False])]
array([5, 3])      #布尔数组中下标为0,2的元素为True,所以取下标为0,2的元素
>>>x[np.array([True,False,True,True,False])]=-1,-2,-3
>>>x                #用布尔数组下标修改元素
array([-1,  4, -2, -3,  1])
>>>x=np.random.rand(10)    #产生一个长度为10,元素值为0-1的随机数组
>>>x
array([0.37364332, 0.22582681, 0.23391187, 0.39004449, 0.67905988,
       0.34130333, 0.5224068 , 0.54500064, 0.23887468, 0.80456742])
>>>x[x>0.5]
array([0.67905988, 0.5224068 , 0.54500064, 0.80456742])
多维数组

多维数组下标由多个值来表示,Numpy采用元组作为数组下标。
多维数组同样可以使用整数序列和布尔数组进行存取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值