数组的切片索引:
数组的切片索引和列表非常类似,下面用代码简单说明
1 a = np.random.rand(16).reshape(4, 4)
2 print("数组a:
", a)
3 print(a[-1][1:4])
4 Out[1]:
5 数组a:
6 [[0.04175379 0.43013992 0.5398909 0.40638248]
7 [0.3305902 0.11958799 0.48680358 0.30755734]
8 [0.00893887 0.3848716 0.21018253 0.88170218]
9 [0.80198391 0.4922656 0.67535542 0.64647139]]
10 [0.4922656 0.67535542 0.64647139]
|
由于和列表类似,且要符号多维数组的特征,所以这里不过多阐述。有需要参考列表的相关知识。
数组的循环遍历:
1 a = np.random.rand(9).reshape(3, 3)
2 print("数组a:
", a)
3 for row in a:
4 print(row) # 一行一行的输出
5 for item in a.flat:
6 print(item)
7 # 通用的循环函数
8 for_test = np.apply_along_axis(np.mean, axis=0, arr=a) # apply_along_axis(func1d, axis, arr, *args, **kwargs)
9 print("np.apply_along_axis的调试:
", for_test) # axis=0为按列,axis=1为按行
10 Out[2]:
11 数组a:
12 [[0.97420758 0.20766438 0.52942127]
13 [0.82673775 0.44288163 0.41729451]
14 [0.1373707 0.68103565 0.92256133]]
15 [0.97420758 0.20766438 0.52942127]
16 [0.82673775 0.44288163 0.41729451]
17 [0.1373707 0.68103565 0.92256133]
18 0.9742075804081937
19 0.20766438289931244
20 0.5294212665874829
21 0.8267377457345865
22 0.44288163199889663
23 0.4172945079908593
24 0.13737070280419617
25 0.6810356459375222
26 0.922561331228303
27 np.apply_along_axis的调试:
28 [0.64610534 0.44386055 0.62309237]
|
np.apply_along_axis()方法在我们对矩阵按行按列操作的时候最好用它。注意,第一个参数是方法,方法可以是自己对矩阵每个元素操作的函数方法。
条件和布尔数组:
1 a = np.random.rand(9).reshape(3, 3)
2 print(a < 0.5) # 输出布尔数组
3 print(a[a < 0.5]) # 输出true对应的元素
4 Out[3]:
5 [[ True False True]
6 [False True False]
7 [False True False]]
8 [0.19353844 0.03944841 0.38137674 0.3069755 ]
|
数组 形状变化:
1 a = np.random.rand(9).reshape(3, 3)
2 a = a.ravel() # 此时的a是一个新数组
3 print(a) # 将数组平铺成一维数组
4 a.shape = (3, 3) # 你也可以用reshape
5 print(a)
6 Out[4]:
7 [0.83017305 0.11660585 0.83060752 0.221212 0.35489551 0.74925696
8 0.61087204 0.85969402 0.90966368]
9 [[0.83017305 0.11660585 0.83060752]
10 [0.221212 0.35489551 0.74925696]
11 [0.61087204 0.85969402 0.90966368]]
|
注意用A.T表示转置,或者用A.transpose()。