一维数组
arr = np.arange(10) #获取数组的第5个元素,从0开始 arr[5] #获取数组的第5个至第8个(不包含第8个元素)元素 arr[5:8] #从0开始,为数组的第5个至第8个(不包含第8个元素)元素赋值12 #为切片赋值时,整个选区里所有元素都会变成这个值 arr[5:8] = 5 #给数组中所有值赋值 arr[:] = 5
在Numpy中,我们是无法为切片创建新副本的,比如:
以上的方法,在Numpy中,只是为切片取了一个别名,操作的对象还是源数组的选区。
多维数组
arr2 = np.array([[1,2,3],[3,4,5],[5,6,7]]) #从0开始,获取数组第1行的数组 arr2[1] #从0开始,获取数组第0行第1列的元素 arr2[0][1] #也可以写作 arr2[0,1] #从0开始,获取前2行的数据 arr2[:2] #从0开始,获取第1行前两列的数据 arr2[1,:2] #从0开始,获取前2行第一列后的数据 arr2[:2,1:]
布尔型索引
data = np.random.randint(10, size=(5,10)) #从0开始,获取第3列为5的数据 data[data[:,3] == 5] #可以使用“~”反转条件 data[~(data[:,3] == 5)] #可以使用布尔运算符&(与)、|(或) mask = (data[:,3] == 5)|(data[:,3] == 6) data[mask] #将所有小于5的数据设置为0 data[data < 5] = 0 #从0开始,将除了第3列等于5的行之外的数据全部设置为0 data[~(data[:,3] == 5)] = 0