1 #3.1常规办法:数组元素的存取方法和Python的标准方法相同
2 a = np.arange(10)3 a[8] = 888
4 printa5 ## # # 切片[3,6),左闭右开
6 print a[3:6]7 ## # # 省略开始下标,表示从0开始
8 print a[:5]9 #下标为负表示从后向前数
10 print a[3:]11 #步长为2,范围:[1,7)
12 print a[1:7:2]13 #步长为-1,即:翻转
14 print a[::-1]15 ## # # 切片数据是原数组的一个视图,与原数组共享内容空间,可以直接修改元素值
16 a[2:4] = 10,20
17 printa18 #因此,在实践中,切实注意原始数据是否被破坏,如:
19 b = a[2:5]20 b[0] = 200
21 printa22
23
24 ## 3.2 整数/布尔数组存取
25 ## 3.2.1
26 #根据整数数组存取:当使用整数序列对数组元素进行存取时,
27 #将使用整数序列中的每个元素作为下标,整数序列可以是列表(list)或者数组(ndarray)。
28 #使用整数序列作为下标获得的数组不和原始数组共享数据空间。
29 a = np.logspace(0,9,10, base=2)30 printa31 i = np.arange(1,10,2)32 printi33 #利用i取a中的元素
34 b =a[i]35 printb36 #b的元素更改,a中元素不受影响
37 b[2] = 1.6
38 printb39 printa40
41 ## 3.2.2
42 #使用布尔数组i作为下标存取数组a中的元素:返回数组a中所有在数组b中对应下标为True的元素
43 ## 生成10个满足[0,1)中均匀分布的随机数
44 a = np.random.rand(10)45 printa46 #大于0.5的元素索引
47 print a > 0.5
48 #大于0.5的元素
49 b = a[a > 0.5]50 printb51 #将原数组中大于0.5的元素截取成0.5
52 a[a > 0.5] = 0.5
53 printa54 #b不受影响
55 printb56
57 #3.3 二维数组的切片
58 a = np.arange(0,60,10) #行向量
59 print 'a =', a60 b = a.reshape((-1,1)) #转为列向量
61 print 'b =',b62 c = np.arange(6)63 printc64 #行 + 列
65 f = b +c66 #合并上述代码
67 a = np.arange(0,60,10).reshape((-1,1))+np.arange(6)68 printa69 #二维数组的切片
70 print a[(0,1,2,3),(2,3,4,5)]#取出第(0,2)(1,3)(2,4)(3,5)个元素
71 print a[3:,[0,2,5]]72 i =np.array([True, False, True, False, False, True])73 printa[i]74 print a[i,3]