Skip to content

Commit 098c310

Browse files
authored
Create python_numpy.py
1 parent 8e2ad8f commit 098c310

1 file changed

Lines changed: 150 additions & 0 deletions

File tree

python_numpy.py

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
# _*_coding:utf-8-*_
2+
import numpy as np
3+
# 定义矩阵变量并输出变量的一些属性
4+
# 用np.array()生成矩阵
5+
arr=np.array([[1,2,3],
6+
[4,5,6]])
7+
8+
print(arr)
9+
print('number of arr dimensions: ',arr.ndim)
10+
print('~ ~ ~ shape: ',arr.shape)
11+
print('~ ~ ~ size: ', arr.size)
12+
13+
# 输出结果:
14+
[[1 2 3]
15+
[4 5 6]]
16+
number of arr dimensions: 2
17+
~ ~ ~ shape: (2, 3)
18+
~ ~ ~ size: 6
19+
20+
# 定义一些特殊矩阵
21+
# 指定矩阵数据类型
22+
arr=np.array([[1,2,3],
23+
[4,5,6]],
24+
dtype=np.float64) # 我的电脑np.int是int32,还可以使用np.int32/np.int64/np.float32/np.float64
25+
print(arr.dtype)
26+
27+
# 用np.zeros()生成全零矩阵
28+
arr_zeros=np.zeros( (2,3) )
29+
print(arr_zeros)
30+
31+
# 用np.ones()生成全一矩阵
32+
arr_ones=np.ones( (2,3) )
33+
print(arr_ones)
34+
35+
# 生成随机矩阵np.random.random()
36+
arr_random=np.random.random((2,3))
37+
print(arr_random)
38+
39+
# 用np.arange()生成数列
40+
arr=np.arange(6,12)
41+
print(arr)
42+
43+
# 用np.arange().reshape()将数列转成矩阵
44+
arr=np.arange(6,12).reshape( (2,3) )
45+
print(arr)
46+
47+
# 用np.linspace(开始,结束,多少点划分线段),同样也可以用reshape()
48+
arr=np.linspace(1,5,3)
49+
print(arr)
50+
51+
# 矩阵运算
52+
arr1=np.array([1,2,3,6])
53+
arr2=np.arange(4)
54+
55+
# 矩阵减法,加法同理
56+
arr_sub=arr1-arr2
57+
print(arr1)
58+
print(arr2)
59+
print(arr_sub)
60+
61+
# 矩阵乘法
62+
arr_multi=arr1**3 # 求每个元素的立方,在python中幂运算用**来表示
63+
print(arr_multi)
64+
65+
arr_multi=arr1*arr2 # 元素逐个相乘
66+
print(arr_multi)
67+
68+
arr_multi=np.dot(arr1, arr2.reshape((4,1))) # 维度1*4和4*1矩阵相乘
69+
print(arr_multi)
70+
71+
arr_multi=np.dot(arr1.reshape((4,1)), arr2.reshape((1,4))) # 维度4*1和1*4矩阵相乘
72+
print(arr_multi)
73+
74+
arr_multi=arr1.dot(arr2.reshape((4,1))) # 也可以使用矩阵名.doc(矩阵名)
75+
print(arr_multi)
76+
77+
# 三角运算:np.sin()/np.cos()/np.tan()
78+
arr_sin=np.sin(arr1)
79+
print(arr_sin)
80+
81+
# 逻辑运算
82+
print(arr1<3) # 查看arr1矩阵中哪些元素小于3,返回[ True True False False]
83+
84+
# 矩阵求和,求矩阵最大最小值
85+
arr1=np.array([[1,2,3],
86+
[4,5,6]])
87+
print(arr1)
88+
print(np.sum(arr1)) # 矩阵求和
89+
print(np.sum(arr1,axis=0)) # 矩阵每列求和
90+
print(np.sum(arr1,axis=1).reshape(2,1)) # 矩阵每行求和
91+
92+
print(np.min(arr1)) # 求矩阵最小值
93+
print(np.min(arr1,axis=0))
94+
print(np.min(arr1,axis=1))
95+
96+
print(np.max(arr1)) # 求矩阵最大值
97+
98+
print(np.mean(arr1)) # 输出矩阵平均值,也可以用arr1.mean()
99+
print(np.median(arr1)) # 输出矩阵中位数
100+
101+
# 输出矩阵某些值的位置
102+
arr1=np.arange(2,14).reshape((3,4))
103+
print(arr1)
104+
105+
print(np.argmin(arr1)) # 输出矩阵最小值的位置,0
106+
print(np.argmax(arr1)) # 输出矩阵最大值的位置,11
107+
108+
print(np.cumsum(arr1)) # 输出前一个数的和,前两个数的和,等等
109+
print(np.diff(arr1)) # 输出相邻两个数的差值
110+
111+
arr_zeros=np.zeros((3,4))
112+
print(np.nonzero(arr_zeros)) #输出矩阵非零元素位置,返回多个行向量,第i个行向量表示第i个维度
113+
print(np.nonzero(arr1))
114+
115+
print(np.sort(arr1)) # 矩阵逐行排序
116+
print(np.transpose(arr1)) # 矩阵转置,也可以用arr1.T
117+
118+
print(np.clip(arr1,5,9)) #将矩阵中小于5的数置5,大于9的数置9
119+
120+
# numpy索引
121+
arr1=np.array([1,2,3,6])
122+
arr2=np.arange(2,8).reshape(2,3)
123+
124+
print(arr1)
125+
print(arr1[0]) # 索引从0开始计数
126+
127+
print(arr2)
128+
print(arr2[0][2]) # arr[行][列],也可以用arr[行,列]
129+
print(arr2[0,:]) # 用:来代表所有元素的意思
130+
print(arr2[0,0:3]) # 表示输出第0行,从第0列到第2列所有元素
131+
# 注意python索引一般是左闭右开
132+
133+
# 通过for循环每次输出矩阵的一行
134+
for row in arr2:
135+
print(row)
136+
137+
# 如果要每次输出矩阵的一列,就先将矩阵转置
138+
arr2_T=arr2.T
139+
print(arr2_T)
140+
for row in arr2_T:
141+
print(row)
142+
143+
# 将矩阵压成一行逐个输出元素
144+
arr2_flat=arr2.flatten()
145+
print(arr2_flat)
146+
147+
for i in arr2.flat: # 也可以用arr2.flatten()
148+
print(i)
149+
150+

0 commit comments

Comments
 (0)