一、基础操作
一维数组: 例如 list 的用法
多维数组:
定位一个元素 a[行][列]
定位多个元素 a[ ... ,列] (返回一维数组) "..." 代表 所有行
注意 : a[...][1] == a[1] 不同于 a[... ,1]
二、高级操作
1. 整数 数组
1.精准获得数组数据: 通过 行序列 列序列 一 一 对应 , 返回一维数组
x = np.array([
[1, 2,1,1],
[3, 4,1,2],
[5, 6,2,3]
])
#[0,1,2]代表行索引;[0,1,0]代表列索引
y = x[
[0,1,2],[0,1,0]
]
2. 获得 数组的一个片段 (多行多列)
a = np.array([
[1,2,3],
[4,5,6],
[7,8,9]
])
# 行取得2行和3行,列取得2列和3列
b = a[1:3, 1:3]
b
#%%
# 1:3 == [1,2]
c = a[1:3,[1,2]]
# ... 表示所有行,1: 表示从第二列开始的所有列
d = a[...,1:]
b = a[1:3, 1:3]
# 1:3 == [1,2] (第二列 和 第三列 )
c = a[1:3,[1,2]]
# ... 表示所有行,1: 表示从第二列开始的所有列
d = a[...,1:]
3.布尔型索引
x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]])
x[x%2!=0]=-1
print(x)
1.通过 条件判断 对数组内数据进行筛查 ,返回一维数组
2. 筛出指定区域数据
b = np.array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9,10,11]])
c=b[[True ,False,True,True],[True,True,True]]
True 的数目要相同 ,否则会造成 索引不匹配
如果所需求的数据不在 选定区域 ,例如 2行3列 True 个数不同, 则我们 所选择的做法是,先选择所需的行, 再选择所需的列。
三、广播机制
两个数组进行 运算时 所采用的机制
1. 如果 a1.shape() == a2.shape() 可以进行运算
2.
广播的规则:
- 让所有输入数组都向其中形状最长的数组看齐,形状中不足的部分都通过在前面加 1 补齐。
- 输出数组的形状是输入数组形状的各个维度上的最大值。
- 如果输入数组的某个维度和输出数组的对应维度的长度相同或者其长度为 1 时,这个数组能够用来计算,否则出错。
- 当输入数组的某个维度的长度为 1 时,沿着此维度运算时都用此维度上的第一组值。\