对于数组,和
Python
列表一样进行索引、切片和迭代
arr[n:m]
arr[n:m:s]
:s为步长- 索引下标从0开始
- 取出某个元素的两种形式:
arr[m,n]==arr[m][n]
- 如果索引中使用三个点,假设
x
有5个轴
x[1,2,...]
相当于x[1,2,:,:,:]
x[1,2,...]
相当于x[1,2,:,:,:]
x[...,3]
相当于x[:,:,:,:,3]
x[4,...,5,:]
相当于x[4,:,:,5,:]
- 关于迭代问题:
- 默认是对第一轴进行迭代
- 如果想迭代所有的元素,使用
arr.flat
方法
切片
1 | import numpy as np |
array([ 0, 1, 8, 27, 64, 125, 216, 343, 512, 729], dtype=int32)
1 | x[2:6] # 第3个数据到第6个数据,共4个 |
array([ 8, 27, 64, 125], dtype=int32)
1 | x[2:-2:] |
array([ 8, 27, 64, 125, 216, 343], dtype=int32)
1 | x[:6:2] = -1000 # 按照步长为2取数,并将这些数设置为-1000 |
array([-1000, 1, -1000, 27, -1000, 125, 216, 343, 512,
729], dtype=int32)
1 | x[::-1] # 反转功能 |
array([ 729, 512, 343, 216, 125, -1000, 27, -1000, 1,
-1000], dtype=int32)
1 | for i in x: # 能够用于for遍历 |
-1000
1
-1000
27
-1000
125
216
343
512
729
索引
1 | a = np.array([[0,1,2,3], [4,5,6,7], [10,11,12,13], [15,16,17,18]]) |
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[10, 11, 12, 13],
[15, 16, 17, 18]])
1 | a[2,3] # 注意索引是从0开始的:第3行第4列的元素13 |
1 | a[0:5, 1] |
array([ 1, 5, 11, 16])
1 | a[0:3] |
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[10, 11, 12, 13]])
1 | a[0:3, 1] # 前面0:3表示取出前3个数据,后面的1表示第2列的数据 |
array([ 1, 5, 11])
1 | a[: ,2] # 取出每行的第3列数据 |
array([ 2, 6, 12, 17])
1 | a[1:3] |
array([[ 4, 5, 6, 7],
[10, 11, 12, 13]])
1 | a[1:3, : ] # 取出每列的第二行和第三行的数据,索引从0开始 |
array([[ 4, 5, 6, 7],
[10, 11, 12, 13]])
1 | a[-1] # 当给的参数少于轴数时,其它的轴被认为是全选,等同于a[-1,:] |
array([15, 16, 17, 18])
1 | a[1,...] # 连续的3个点...表示所有轴的索引 |
array([4, 5, 6, 7])
1 | a[1, : ] # 功能类似于上面 |
array([4, 5, 6, 7])
1 | a[1] # 同上,取出第二行数据 |
array([4, 5, 6, 7])
迭代
1 | for row in a: # for遍历打印的是每行数据 |
[0 1 2 3]
[4 5 6 7]
[10 11 12 13]
[15 16 17 18]
1 | for element in a.flat: # 通过数组的flat属性进行迭代,打印每个元素 |
0
1
2
3
4
5
6
7
10
11
12
13
15
16
17
18