0%

python数据分析与机器学习实战-04.Numpy常用函数

1
2
3
4
5
6
7
import numpy as np
a = np.arange(4)
print(a)
#exp():返回e的n次方,e是一个常数为2.71828
print(np.exp(a))
#sqrt():开方
print(np.sqrt(a))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
[0 1 2 3]
[ 1. 2.71828183 7.3890561 20.08553692]
[0. 1. 1.41421356 1.73205081]
#floor():向下取整,例如3.5 取整后为3
b = np.floor(10*np.random.random((3,4)))
print(b)
print("-----")
#将矩阵拉为向量
print(b.ravel())
print("-----")
#调整结构
b.shape = (6,2)
print(b)
#行和列转换
print("-----")
print(b.T)
[[7. 1. 5. 6.]
[7. 1. 2. 4.]
[1. 5. 7. 4.]]
-----
[7. 1. 5. 6. 7. 1. 2. 4. 1. 5. 7. 4.]
-----
[[7. 1.]
[5. 6.]
[7. 1.]
[2. 4.]
[1. 5.]
[7. 4.]]
-----
[[7. 5. 7. 2. 1. 7.]
[1. 6. 1. 4. 5. 4.]]
#reshape()自动计算列,只要将最后一个数改为-1即可。
b.reshape(3,-1)
array([[7., 1., 5., 6.],
[7., 1., 2., 4.],
[1., 5., 7., 4.]])
#矩阵拼接
import numpy as np
a = np.floor(10*np.random.random((2,2)))
b = np.floor(10*np.random.random((2,2)))
print(a)
print("-----")
print(b)
print("-----")
#横向拼接
print(np.hstack((a,b)))
print("-----")
#纵向拼接
print(np.vstack((a,b)))
[[1. 8.]
[7. 6.]]
-----
[[3. 9.]
[7. 5.]]
-----
[[1. 8. 3. 9.]
[7. 6. 7. 5.]]
-----
[[1. 8.]
[7. 6.]
[3. 9.]
[7. 5.]]
#矩阵切分
a = np.floor(10*np.random.random((2,12)))
print(a)
[[4. 3. 0. 7. 6. 7. 7. 8. 9. 1. 2. 7.]
[5. 5. 9. 1. 1. 4. 5. 5. 4. 2. 8. 8.]]
#横向切分
#切成3份
np.hsplit(a,3)
[array([[4., 3., 0., 7.],
[5., 5., 9., 1.]]), array([[6., 7., 7., 8.],
[1., 4., 5., 5.]]), array([[9., 1., 2., 7.],
[4., 2., 8., 8.]])]
#横向指定位置切分
np.hsplit(a,(3,4))
[array([[4., 3., 0.],
[5., 5., 9.]]), array([[7.],
[1.]]), array([[6., 7., 7., 8., 9., 1., 2., 7.],
[1., 4., 5., 5., 4., 2., 8., 8.]])]
#纵向切分
a = np.floor(10*np.random.random((12,2)))
print(a)
print(np.vsplit(a,3))
[[8. 4.]
[6. 1.]
[0. 2.]
[7. 5.]
[7. 6.]
[7. 6.]
[3. 3.]
[8. 0.]
[5. 6.]
[1. 3.]
[1. 2.]
[1. 5.]]
[array([[8., 4.],
[6., 1.],
[0., 2.],
[7., 5.]]), array([[7., 6.],
[7., 6.],
[3., 3.],
[8., 0.]]), array([[5., 6.],
[1., 3.],
[1., 2.],
[1., 5.]])]
#复制的不同操作
#赋值,a、b变量指向了相同的位置,当a和b二者任意出现改变时,数据均会发生变化
a = np.arange(12)
print(a)
b = a
print(a is b)
b.shape = (3,4)
print(a.shape)
print(id(a))
print(id(b))
[ 0 1 2 3 4 5 6 7 8 9 10 11]
True
(3, 4)
4562436864
4562436864
#浅复制
c = a.view()
print(c is a)
c.shape = (2,6)
print(a.shape)
c[1,0] = 123
print(a)
print(id(a))
print(id(b))
False
(3, 4)
[[ 0 1234 2 3]
[1234 5 123 1234]
[ 8 9 10 11]]
4562436864
4562436864
#深复制
a = np.arange(12)
b = a.copy()
a.shape = (3,4)
b.shape = (2,6)
a[0,0] = 123
b[1,0] = 234
print(a)
print(b)
print(id(a))
print(id(b))
[[123 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[ 0 1 2 3 4 5]
[234 7 8 9 10 11]]
4562468656
4562467776