本系列文章配套代码获取有以下三种途径:
-
可以在以下网站查看,该网站是使用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
——————————————————
1.生成ndarray:
1.1 使用array函数生成ndarray:
生成数组最简单的方法就是使用array
函数,array
函数接收任意的序列型对象(sequence-like object),生成一个Numpy数组。
1# 当np.array()没有显式地指定dtype时,numpy将根据数据情况字段推断生成一个数据类型
2x = np.array(list/tuple)
3x = np.array(list/tuple,dtype=np.float32)
例如,使用列表,嵌套列表,元祖数据生成ndarray数组。
1>>> np.array([1.1 , 2.2 , 3.3 , 4.4])
2array([1.1, 2.2, 3.3, 4.4])
3
4>>> np.array([[1.1 , 2.2 , 3.3 , 4.4] , [5.5 , 6.6 , 7.7 , 8.8]])
5array([[1.1, 2.2, 3.3, 4.4],
6 [5.5, 6.6, 7.7, 8.8]])
7
8>>> np.array((1.1 , 2.2 , 3.3 , 4.4))
9array([1.1, 2.2, 3.3, 4.4])
1.2 使用生成函数生成ndarray:
除了array函数,数组生成函数还包括以下几种:
函数 |
说明 |
np.array() | —- |
np.asarray() | 将输入转换为ndarray,但是如果输入已经是ndarray则不再复制 |
np.arange(n) | 类似range()函数,返回ndarray类型,元素从0到n-1 |
np.ones(shape) | 根据shape生成一个全1数组,shape是元祖类型 |
np.ones_like(a) | 根据数组a的形状生成一个全1数组 |
np.zeros(shape) | 根据shape生成一个全0数组,shape是元祖类型 |
np.zeros_like(a) |
根据数组a的形状生成一个全0数组 |
np.empty(shape) | 根据shape生成一个没有初始化数值的空数组,shape是元祖类型 |
np.empty_like(a) | 根据数组a的形状生成一个没有初始化数值的空数组 |
np.full(shape,val) | 根据shape生成一个数组,每个元素都是val |
np.full_like(a,val) | 根据数组a的形状生成一个数组,每个元素值都是val |
np.eye(n) | 创建一个正方的n×n单位矩阵,对角线为1,其余为0 |
np.linspace(start, stop, num) | 根据起始值及间隔数量num等间距地填充数据,形成数组 |
TIPS:使用numpy.empty生成一个全部为0的数组是不安全的。该函数返回未初始化的内存,因此可能包含非零的 “垃圾 “值。只有当你打算用数据填充新的数组时,你才应该使用该函数。 |
1# np.asarray()——将输入转换为ndarray
2>>> np.asarray([1.1 , 2.2 , 3.3 , 4.4])
3array([1.1, 2.2, 3.3, 4.4])
4
5# np.asarray()——将输入转换为ndarray,但是如果输入已经是ndarray则不再复制
6>>> arr = np.array([5.5 , 6.6 , 7.7 , 8.8])
7>>> np.asarray(arr)
8array([5.5, 6.6, 7.7, 8.8])
9
10# np.arange(n)——类似range()函数,返回ndarray类型,元素从0到n-1
11>>> arr = np.arange(10)
12>>> arr
13array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
14
15# np.ones(shape)——根据shape生成一个全1数组,shape是元祖类型
16>>> np.ones((2,3))
17array([[1., 1., 1.],
18 [1., 1., 1.]])
19
20# np.ones_like(a)——根据数组a的形状生成一个全1数组
21>>> arr = np.array([[[1.1 , 2.2] , [3.3 , 4.4]] , [[5.5 , 6.6] , [7.7 , 8.8]]])
22>>> arr
23array([[[1.1, 2.2],
24 [3.3, 4.4]],
25
26 [[5.5, 6.6],
27 [7.7, 8.8]]])
28
29>>> np.ones_like(arr)
30array([[[1., 1.],
31 [1., 1.]],
32
33 [[1., 1.],
34 [1., 1.]]])
35
36# np.zeros(shape)——根据shape生成一个全0数组,shape是元祖类型
37>>> np.zeros((2,3))
38array([[0., 0., 0.],
39 [0., 0., 0.]])
40
41# np.zeros_like(a)——根据数组a的形状生成一个全0数组
42>>> arr = np.array([[[1.1 , 2.2] , [3.3 , 4.4]] , [[5.5 , 6.6] , [7.7 , 8.8]]])
43>>> np.zeros_like(arr)
44array([[[0., 0.],
45 [0., 0.]],
46
47 [[0., 0.],
48 [0., 0.]]])
49
50# np.empty(shape)——根据shape生成一个没有初始化数值的空数组,shape是元祖类型
51>>> np.empty((2,3))
52array([[0., 0., 0.],
53 [0., 0., 0.]])
54
55# np.empty_like(a)——根据数组a的形状生成一个没有初始化数值的空数组,有可能会返回‘垃圾值’
56>>> arr = np.array([[[1.1 , 2.2] , [3.3 , 4.4]] , [[5.5 , 6.6] , [7.7 , 8.8]]])
57>>> np.empty_like(arr)
58array([[[1.1, 2.2],
59 [3.3, 4.4]],
60
61 [[5.5, 6.6],
62 [7.7, 8.8]]])
63
64# np.full(shape,val)——根据shape生成一个数组,每个元素都是val
65>>> np.full((2,3) , 99)
66array([[99, 99, 99],
67 [99, 99, 99]])
68
69# np.full_like(a,val)——根据数组a的形状生成一个数组,每个元素值都是val
70>>> arr = np.array([[[1.1 , 2.2] , [3.3 , 4.4]] , [[5.5 , 6.6] , [7.7 , 8.8]]])
71>>> np.full_like(arr , 99)
72array([[[99., 99.],
73 [99., 99.]],
74
75 [[99., 99.],
76 [99., 99.]]])
77
78# np.eye(n)——创建一个正方的n×n单位矩阵,对角线为1,其余为0
79>>> np.eye(5)
80array([[1., 0., 0., 0., 0.],
81 [0., 1., 0., 0., 0.],
82 [0., 0., 1., 0., 0.],
83 [0., 0., 0., 1., 0.],
84 [0., 0., 0., 0., 1.]])
85
86# np.linspace(start, stop, num, endpoint, retstep, dtype)
87np.linspace(0,10 , num=5)
88>>> array([ 0. , 2.5, 5. , 7.5, 10. ])
2.ndarray对象的属性:
通过下述函数可以查看数组的相应属性信息。
属性 | 说明 |
.ndim | 秩,即轴的数量或维度的数量 |
.shape | ndarray对象尺度,对于矩阵,n行m列 |
.size | ndarray对象元素的个数,相当于.shape中n×m的值 |
.dtype | ndarray对象的元素类型 |
.itemsize | ndarray对象中每个元素的大小,以字节为单位 |
1>>> arr = np.array([[[1.1 , 2.2] , [3.3 , 4.4]] , [[5.5 , 6.6] , [7.7 , 8.8]]])
2>>> arr
3array([[[1.1, 2.2],
4 [3.3, 4.4]],
5
6 [[5.5, 6.6],
7 [7.7, 8.8]]])
8
9# 轴的数量或维度的数量
10>>> arr.ndim
113
12
13# ndarray对象尺度
14>>> arr.shape
15(2, 2, 2)
16
17# ndarray对象元素的个数
18>>> arr.size
198
20
21# ndarray对象的元素类型
22>>> arr.dtype
23dtype('float64')
24
25# ndarray对象中每个元素的大小,以字节为单位
26>>> arr.itemsize
278
本篇文章来源于微信公众号: 码农设计师