Numpy数组索引与切片
Numpy数组索引与切片
1. `ndarray`对象的内容可以通过`索引`或`切片`来获取和修改,就像 Python 的内置容器对象一样。
2. `一维数组`:一维数组比较简单,看起来和python列表很类似。
3. `二维数组`:每个索引值对应的元素不在是一个值,而是一个一维数组
4. `多维数组
import numpy as np
a = np.arange(0,9)
print('一维数组操作')
print(a)
print('索引:',a[2])
print('切片:',a[2:5])
a[2:5]=88
print('赋值:',a)
print('*'*30)
print('二维数组操作')
b = a.reshape(3,3)
print(b)
print('索引:获取的一维数组',b[2]) #获取的一个一维数组
print('分割列表去获取的某一个值',b[2,2]) #获取的某一个值
print('通过递归的方式获取的某一个值',b[2][2]) #获取的某一个值
print('按列获取切片:',b[:,2])
print('按行获取切片:',b[2,:])
print('*'*30)
print('多维数组操作')
c = np.arange(1,19).reshape(3,3,2)
print(c)
print('索引:获得一个二维数组 获取第1层',c[2])
print('索引:获得一个一维数组 获取第1层的第1行',c[2,2])
print('索引:获得一个值',c[2,2,1])
一维数组操作
[0 1 2 3 4 5 6 7 8]
索引: 2
切片: [2 3 4]
赋值: [ 0 1 88 88 88 5 6 7 8]
******************************
二维数组操作
[[ 0 1 88]
[88 88 5]
[ 6 7 8]]
索引:获取的一维数组 [6 7 8]
分割列表去获取的某一个值 8
通过递归的方式获取的某一个值 8
按列获取切片: [88 5 8]
按行获取切片: [6 7 8]
******************************
多维数组操作
[[[ 1 2]
[ 3 4]
[ 5 6]]
[[ 7 8]
[ 9 10]
[11 12]]
[[13 14]
[15 16]
[17 18]]]
索引:获得一个二维数组 获取第1层 [[13 14]
[15 16]
[17 18]]
索引:获得一个一维数组 获取第1层的第1行 [17 18]
索引:获得一个值 18
******************************
Numpy布尔索引和花式索引
1. **布尔索引**:指的是一个由布尔值组成的数组可以作为一个数组的索引,返回的数据为`True`值对应位置的值。**布尔值数组长度必须和数组轴索引长度一致**。
2. **花式索引**:指的是用`整数数组`进行数据索引。根据索引数组的值作为目标数组的某个轴的下标来取值。对于使用一维整型数组作为索引,如果目标是一维数组,那么索引的结果就是对应位置的元素;如果目标是二维数组,那么就是对应下标的行
`花式索引和切片不一样,它总是将数据复制到一个新的数组中。!!!`
import numpy as np
a = np.arange(1,10).reshape(3,3)
np.random.shuffle(a)
print(a)
print('布尔索引先返回一个true、false类型数据',a>5)
print('在根据结果返回元素值为True的元素',a[a>5],end='\n**************\n')
print('花式索引',end='\n**************\n')
print('花式索引',a[[0,2]])
print('花式索引',a[[-1,-2]])
print('花式索引:取出(0,2),(2,1),(1,2)----',a[[0,2,1],[2,1,2]])
[[4 5 6]
[7 8 9]
[1 2 3]]
布尔索引先返回一个true、false类型数据 [[False False True]
[ True True True]
[False False False]]
在根据结果返回元素值为True的元素 [6 7 8 9]
**************
花式索引
**************
花式索引 [[4 5 6]
[1 2 3]]
花式索引 [[1 2 3]
[7 8 9]]
花式索引:取出(0,2),(2,1),(1,2)---- [6 2 9]
志同道合一起学习,欢迎加入QQ群:878749917