本系列文章配套代码获取有以下三种途径:
-
可以在以下网站查看,该网站是使用JupyterLite搭建的web端Jupyter环境,因此无需在本地安装运行环境即可使用,首次运行浏览器需要下载一些配置文件(大约20M):
https://returu.github.io/Python_Data_Analysis/lab/index.html
-
也可以通过百度网盘获取,需要在本地配置代码运行环境,环境配置可以查看【Python基础】2.搭建Python开发环境:
链接:https://pan.baidu.com/s/1MYkeYeVAIRqbxezQECHwcA?pwd=mnsj
提取码:mnsj
-
前往GitHub详情页面,单击 code 按钮,选择Download ZIP选项:
https://github.com/returu/Python_Data_Analysis
根据《Python for Data Analysis 3rd Edition》翻译整理
—————-————————————-
1.数组算术:
ndarray数组允许进行批量操作而无需使用for循环,因此更加简便,这种特性也被称为向量化。任何两个等尺寸之间的算术操作都应用逐元素操作的方式进行。
1>>> import numpy as np
2
3>>> arr1 = np.array([[1,2,3,4],[9,8,7,6]])
4>>> arr1
5array([[1, 2, 3, 4],
6 [9, 8, 7, 6]])
7
8>>> arr2 = np.array([[4,3,2,1],[6,7,8,9]])
9>>> arr2
10array([[4, 3, 2, 1],
11 [6, 7, 8, 9]])
12
13>>> arr1 + arr2
14array([[ 5, 5, 5, 5],
15 [15, 15, 15, 15]])
16
17>>> arr1 * arr2
18array([[ 4, 6, 6, 4],
19 [54, 56, 56, 54]])
20
21>>> 1 / arr1
22array([[1. , 0.5 , 0.33333333, 0.25 ],
23 [0.11111111, 0.125 , 0.14285714, 0.16666667]])
24
25>>> arr2 * 0.8
26array([[3.2, 2.4, 1.6, 0.8],
27 [4.8, 5.6, 6.4, 7.2]])
2.数组的变换:
-
ndarray数组的维度变换主要包括以下几种方法:
函数方法 |
说明 |
.reshape(shape) | 不改变数组元素,返回一个shape形状的数组,原数组不变 |
.resize(shape) | 与.reshape()功能一致,但修改原数组 |
.swapaxes(ax1,ax2) | 将数组n个维度中两个维度进行调换 |
.flatten() | 对数组进行降维,返回折叠后的一维数组,原数组不变 |
1>>> arr = np.array([[[12,11,10] , [9,8,7]] , [[6,5,4] , [3,2,1]]])
2>>> arr
3array([[[12, 11, 10],
4 [ 9, 8, 7]],
5
6 [[ 6, 5, 4],
7 [ 3, 2, 1]]])
8>>> arr.shape
9(2, 2, 3)
10
11# reshape(shape)——不改变数组元素,返回一个shape形状的数组,原数组不变
12>>> arr.reshape((2,6))
13array([[12, 11, 10, 9, 8, 7],
14 [ 6, 5, 4, 3, 2, 1]])
15>>> arr
16array([[[12, 11, 10],
17 [ 9, 8, 7]],
18
19 [[ 6, 5, 4],
20 [ 3, 2, 1]]])
21
22# resize(shape)——与reshape()功能一致,但修改原数组
23>>> arr.resize((3,2,2))
24>>> arr
25array([[[12, 11],
26 [10, 9]],
27
28 [[ 8, 7],
29 [ 6, 5]],
30
31 [[ 4, 3],
32 [ 2, 1]]])
33>>> arr.shape
34(3, 2, 2)
35
36# swapaxes(ax1,ax2)——将数组n个维度中两个维度进行调换
37>>> arr.swapaxes(0,1)
38array([[[12, 11],
39 [ 8, 7],
40 [ 4, 3]],
41
42 [[10, 9],
43 [ 6, 5],
44 [ 2, 1]]])
45>>> arr.swapaxes(0,1).shape
46(2, 3, 2)
47
48# flatten()——对数组进行降维,返回折叠后的一维数组,原数组不变
49>>> arr.flatten()
50array([12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1])
51>>> arr
52array([[[12, 11],
53 [10, 9]],
54
55 [[ 8, 7],
56 [ 6, 5]],
57
58 [[ 4, 3],
59 [ 2, 1]]])
-
ndarray数组向列表的转换:
1>>> arr = np.array([[1,2,3,4],[9,8,7,6]])
2>>> arr
3array([[1, 2, 3, 4],
4 [9, 8, 7, 6]])
5
6>>> arr.tolist()
7[[1, 2, 3, 4], [9, 8, 7, 6]]
3.数组转置与换轴:
transpose
方法,也有特殊的T
属性。 1>>> arr = np.arange(15).reshape((3,5))
2>>> arr
3array([[ 0, 1, 2, 3, 4],
4 [ 5, 6, 7, 8, 9],
5 [10, 11, 12, 13, 14]])
6
7>>> arr.transpose
8<function ndarray.transpose>
9
10>>> arr.T
11array([[ 0, 5, 10],
12 [ 1, 6, 11],
13 [ 2, 7, 12],
14 [ 3, 8, 13],
15 [ 4, 9, 14]])
16
17>>> arr.T.shape
18(5, 3)
对于更高纬度的数组,transpose
方法可以接受包含轴编号的元组,用于转置轴。
1>>> arr = np.arange(24).reshape((2,3,4))
2>>> arr
3array([[[ 0, 1, 2, 3],
4 [ 4, 5, 6, 7],
5 [ 8, 9, 10, 11]],
6
7 [[12, 13, 14, 15],
8 [16, 17, 18, 19],
9 [20, 21, 22, 23]]])
10
11# 下面的操作是将原来的第三个轴变为第一个,原来的第一个轴变为第二个轴,原来的第二个轴变为第三个轴
12>>> arr.transpose((2,0,1))
13array([[[ 0, 4, 8],
14 [12, 16, 20]],
15
16 [[ 1, 5, 9],
17 [13, 17, 21]],
18
19 [[ 2, 6, 10],
20 [14, 18, 22]],
21
22 [[ 3, 7, 11],
23 [15, 19, 23]]])
24
25>>> arr.transpose((2,0,1)).shape
26(4, 2, 3)
27
28>>> arr.T
29array([[[ 0, 12],
30 [ 4, 16],
31 [ 8, 20]],
32
33 [[ 1, 13],
34 [ 5, 17],
35 [ 9, 21]],
36
37 [[ 2, 14],
38 [ 6, 18],
39 [10, 22]],
40
41 [[ 3, 15],
42 [ 7, 19],
43 [11, 23]]])
44
45>>> arr.T.shape
46(4, 3, 2)
本篇文章来源于微信公众号: 码农设计师