#%% md
+
#%% md
# 索引与切片
#%% md
## 一维数组
#%%
import numpy as np
np
#%%
a = np.random.randint(9, 100, 10)
a
#%%
a[0],a[-1]
#%%
a[[0,3,5, -1]] # 取多个 索引,根据位置取相应的数据
#%%
a[3:6] # 切片
#%%
a[3:6:2] # 也是切片 指定步长 2表示隔一个
#%%
a[::2] # 从第一个开始取 取到最后 但具有步长
#%%
a[::3] # 隔两格
#%%
a[::-1] # 反过来取 数组反转
#%%
a[::-3] # 隔2格
#%% md
## 二维数组
#%%
a = np.random.randint(0, 100, (3,5))
a
#%%
a[1,3] # 索引第一个是0,索引1是第二行,3是第四个元素
#%%
a[1,[1,2]] # 获取第二行的索引1和2的元素
#%%
a[[1,2],3:] # 第二行 3, 4; 第三行 3,4 (第一个中括号行数, 第二个是取的范围)
#%%
a[[0,2],::2] # 取 第一行 和第行 隔列取 取每行相同索引
#%%
a[[1,1,2,2],[1,2,3,4]] # 取不同索引 一个数组是行 一个数组四列
#%%
a[[1,2]][:,[3,4]] # 取第一行第二行 取指定索引(取相同索引)
#%%
a[[0,2]][:, [0,2,4]]
#%%
a[1,2]=1024 # 进行改相应索引
a
#%%
a[2,[2,4]]= 2048 # 第三行, 索引2,4的都进行改动
a
#%% md
## 花式索引
#%%
a = np.random.randint(0, 100, 20)
a
#%%
a[[3,5,7]] # 花式索引
#%%
cond = a > 60
a[cond] # 布尔花式
#%%
cond1 = a < 30
cond2 = a > 80
cond = cond1 | cond2 # 或运算 一个数只能有一个条件 不可能同时匹配 不能用 or
a[cond]
终于可以一张图过了