Numpy--存取数组

import numpy as np
#存取元素
#数组元素同列表一样,存在切片的性质

#一维数组
#可以使用太通列表一样的方式对数组元素进行存取
a = np.arange(10)#使用arange创建数组,数组的下标是从0开始的
print a

print a[5]#输出的是下标为5,但是是第6个元素
print a[3:5]#切片取元素,获取下标3,4的元素
print a[:5]#获取从开始到下标为4的元素
print a[:-1]#下标可以是负数,表示数组从后往前数

#重新赋值
a[2:4]=100,101#切片样式的取值可以赋值
print a
print a[1:-1:2]#从下标为1开始取值到最后,每隔两个元素取
print a[::-1]#步长为-1,表示从后往前取值
print a[5:1:-2]#步长为负数时,表示开始下标必须大于结束下标

#和列表不同的是,通过切片获取的新数组和原来的数组公共一个视图。他与原始数组共享一块数据存储空间。
#
#当使用整数列表对数组元素进行存取时,将使用列表中的每个元素当做新数组的下标,从原始的数组中获取元素。使用列表当做下标获取的元素新组成的数组,不与原始的数组共享数据存储空间。

x = np.arange(10,1,-1)#数组中的元素不包含1,终止的元素为2
print x
#[10  9  8  7  6  5  4  3  2]

print x[[3,3,1,8]]
#[7 7 9 2]

x[[3,5,1]]=-1,-2,-3
print x


#当下标是多维数组时,则得到的也是多维数组。我们可以理解成:现将下标数组展平为一维数组,并作为下标获取一个新的一维数组,然后再将其形状修改写成下标数组的形状。

print x[np.array([[3,3,1,8],[3,3,-3,8]])]
print x[[3,3,1,8,3,3,-3,8]].reshape(2,4)

#当使用布尔数组b作为下标存取数组x 中的元素时,将收集数组x 中所有在数组b中对应下标为True的元素。
#使用布尔数组获取的元素新数组,不与原来的数组共享存储空间。
#

x = np.arange(5,0,-1)
print x
#[5 4 3 2 1]
print x[np.array([True,False,True,False,False])]
#[5 3]
#如果是bool列表,则把True当做1,False当做0,按照整数序列方式获取数组x中的元素。
print x[[True,False,True,False,False]]

#如果布尔数组的长度不够,其余的默认是False

x[np.array([True,False,True,True])] = -1, -2, -3
print x
#[-1  4 -2 -3  1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值