Python:numpy模块的最基础知识
年轻人的第一篇博文属于是
歇在家里无事干?不如学点小模块。不求内容全掌握,但求基础不放过。 高声大喊奥力给,所有知识都下胃。
下面给出numpy最最基础的操作,可以帮助快速入门。
什么是numpy
numpy模块可以构建多维数据容器,将数据整合在一起,完成多维数据的计算以及大型矩阵数组的存储与处理。
P1:创建数组
a=np.array([[1,2,3,4],[2,3,4,5],[3,4,5,6],[4,5,6,7]])
print(a)
b=np.arange(1,20,4)
print(b)
c=np.random.rand(2,3)
print(c)
d=np.random.randn(3,3)
print(d)
e=np.random.randint(1,10,(3,3))
print(e)
f=np.ones((2,3),dtype=int)
print(f)
g=np.zeros((2,3),dtype=int)
print(g)
运行上述示例代码,可以得到如下结果:
----------
[[1 2 3 4]
[2 3 4 5]
[3 4 5 6]
[4 5 6 7]]
----------
[ 1 5 9 13 17]
----------
[[0.51550023 0.50000847 0.37887929]
[0.66532777 0.82010152 0.91650431]]
----------
[[-0.75871322 -1.26306156 0.172365 ]
[-1.44241245 1.11980853 -0.71393665]
[-0.34334332 -0.46943443 -2.63622906]]
----------
[[8 4 4]
[4 9 1]
[9 7 9]]
----------
[[1 1 1]
[1 1 1]]
----------
[[0 0 0]
[0 0 0]]
----------
P2:查看或修改数组属性
arr1=np.array([[1,2],[3,4],[5,6]])
print(arr1.shape)
print(arr1.shape[0])
print(arr1.shape[1])
arr2=np.array([[1,2,3],[3,4,5],[5,6,7]])
print(arr2.size)
arr3=np.array([[1,2,3],[3,4,5],[5,6,7]])
print(arr3.ndim)
arr4=np.array([[1,2.3,3],[3.8,4,5],[5,6,7.1]])
print(arr4.dtype)
arr5=np.array([[1,2.3,3],[3.8,4,5],[5,6,7.1]])
arr5_change=arr5.astype(int)
print(arr5_change)
print(arr5_change.dtype)
运行上述示例代码,可以得到如下结果:
----------
(3, 2)
3
2
----------
9
----------
2
----------
float64
----------
[[1 2 3]
[3 4 5]
[5 6 7]]
int32
----------
P3:选取数组元素
A=np.array([12,32,40,64,56,86,57,18,92,19,28,15])
print(A[0])
print(A[-2])
print(A[3:-2])
print(A[:3])
print(A[1:5:2])
B=np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
print(B)
print(B[1,2])
print(B[1,:])
print(B[:,2])
print(B[1:3,:])
print(B[:,1:3])
print(B[1:3,0:2])
运行上述示例代码,可以得到如下结果:
----------
12
28
[64 56 86 57 18 92 19]
[12 32 40]
[32 64]
----------
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
6
[4 5 6]
[ 3 6 9 12]
[[4 5 6]
[7 8 9]]
[[ 2 3]
[ 5 6]
[ 8 9]
[11 12]]
[[4 5]
[7 8]]
----------
P4:数组重塑与转置
Arr1=np.array([1,2,3,4,5,6,7,8])
print(Arr1.reshape(2,4))
print(Arr1.reshape(4,2))
Arr2=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(Arr2.reshape(4,3))
print(Arr2.reshape(2,6))
Arr3=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(Arr3.flatten())
Arr4=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(Arr4.T)
print(np.transpose(Arr4))
运行上述示例代码,可以得到如下结果:
----------
[[1 2 3 4]
[5 6 7 8]]
[[1 2]
[3 4]
[5 6]
[7 8]]
----------
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
[[ 1 2 3 4 5 6]
[ 7 8 9 10 11 12]]
----------
[ 1 2 3 4 5 6 7 8 9 10 11 12]
----------
[[ 1 5 9]
[ 2 6 10]
[ 3 7 11]
[ 4 8 12]]
[[ 1 5 9]
[ 2 6 10]
[ 3 7 11]
[ 4 8 12]]
----------
P5:添加数组元素
ARR1=np.array([[1,2,3],[4,5,6]])
print(np.append(ARR1,[[7,8,9]],axis=0))
print(np.append(ARR1,[[7,8],[9,10]],axis=1))
ARR2=np.array([[1,2],[3,4],[5,6]])
print(np.insert(ARR2,1,[7,8],axis=0))
print(np.insert(ARR2,1,[7,8,9],axis=1))
运行上述示例代码,可以得到如下结果:
----------
[[1 2 3]
[4 5 6]
[7 8 9]]
[[ 1 2 3 7 8]
[ 4 5 6 9 10]]
----------
[[1 2]
[7 8]
[3 4]
[5 6]]
[[1 7 2]
[3 8 4]
[5 9 6]]
----------
P6:删除数组元素
ARR3=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(np.delete(ARR3,2))
print(np.delete(ARR3,2,axis=0))
print(np.delete(ARR3,2,axis=1))
运行上述示例代码,可以得到如下结果:
----------
[1 2 4 5 6 7 8 9]
[[1 2 3]
[4 5 6]]
[[1 2]
[4 5]
[7 8]]
----------
P7:处理数组的缺失值
ARR4=np.array([[1,2,3,4,5,6,np.nan,8,9]])
print(np.isnan(ARR4))
ARR4[np.isnan(ARR4)]=0
print(ARR4)
运行上述示例代码,可以得到如下结果:
----------
[[False False False False False False True False False]]
[[1. 2. 3. 4. 5. 6. 0. 8. 9.]]
----------
P8:处理数组的重复值
ARR5=np.array([[8,4,2,3,5,2,5,5,6,8,8,9],[8,3,2,5,6,4,2,5,9,7,4,1]])
ARR5_1,ARR5_2=np.unique(ARR5,return_counts=True)
print(ARR5_1)
print(ARR5_2)
运行上述示例代码,可以得到如下结果:
----------
[1 2 3 4 5 6 7 8 9]
[1 4 2 3 5 2 1 4 2]
----------
P9:拼接数组
A1=np.array([[1,2,3],[4,5,6]])
A2=np.array([[7,8,9],[10,11,12]])
print(np.concatenate((A1,A2),axis=0))
print(np.concatenate((A1,A2),axis=1))
A3=np.array([[1,2,3],[4,5,6]])
A4=np.array([[7,8,9],[10,11,12]])
print(np.hstack((A3,A4)))
print(np.vstack((A3,A4)))
运行上述示例代码,可以得到如下结果:
----------
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
[[ 1 2 3 7 8 9]
[ 4 5 6 10 11 12]]
----------
[[ 1 2 3 7 8 9]
[ 4 5 6 10 11 12]]
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
----------
P10:拆分数组
A5=np.array([1,2,3,4,5,6,7,8,9,10,11,12])
print(np.split(A5,4))
print(np.split(A5,[2,3,8,10]))
A6=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])
print(np.hsplit(A6,2))
print(np.vsplit(A6,2))
运行上述示例代码,可以得到如下结果:
----------
[array([1, 2, 3]), array([4, 5, 6]), array([7, 8, 9]), array([10, 11, 12])]
[array([1, 2]), array([3]), array([4, 5, 6, 7, 8]), array([ 9, 10]), array([11, 12])]
----------
[array([[ 1, 2],
[ 5, 6],
[ 9, 10],
[13, 14]]), array([[ 3, 4],
[ 7, 8],
[11, 12],
[15, 16]])]
[array([[1, 2, 3, 4],
[5, 6, 7, 8]]), array([[ 9, 10, 11, 12],
[13, 14, 15, 16]])]
----------
P11:数组的运算
A7=np.array([[1,2,3,4],[5,6,7,8]])
A8=np.array([[9,10,11,12],[13,14,15,16]])
print(A7+A8)
print(A7*A8)
print(A8-A7)
print(A7*2)
print(A7+5)
print(A7<3)
A9=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(A9.sum())
print(A9.sum(axis=0))
print(A9.sum(axis=1))
A10=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(A10.mean())
print(A10.mean(axis=0))
print(A10.mean(axis=1))
A11=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(A11.max())
print(A11.max(axis=0))
print(A11.max(axis=1))
A12=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(A12.cumsum(axis=0))
print(A12.cumsum(axis=1))
运行上述示例代码,可以得到如下结果:
----------
[[10 12 14 16]
[18 20 22 24]]
[[ 9 20 33 48]
[ 65 84 105 128]]
[[8 8 8 8]
[8 8 8 8]]
[[ 2 4 6 8]
[10 12 14 16]]
[[ 6 7 8 9]
[10 11 12 13]]
[[ True True False False]
[False False False False]]
----------
78
[15 18 21 24]
[10 26 42]
----------
6.5
[5. 6. 7. 8.]
[ 2.5 6.5 10.5]
----------
12
[ 9 10 11 12]
[ 4 8 12]
----------
[[ 1 2 3 4]
[ 6 8 10 12]
[15 18 21 24]]
[[ 1 3 6 10]
[ 5 11 18 26]
[ 9 19 30 42]]
----------
P12:矩阵的属性
A13=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(np.linalg.matrix_rank(A13))
A14=np.array([[1,3,2],[1,1,1],[1,3,5]])
print(np.linalg.det(A14))
A15=np.array([[1,3,2],[1,3,1],[1,3,5]])
print(A15.diagonal())
A16=np.array([[0,3,2],[1,0,1],[1,3,5]])
print(A16.trace())
A17=np.array([[0,4,2],[1,0,1],[1,8,2]])
print(np.linalg.inv(A17))
运行上述示例代码,可以得到如下结果:
----------
2
----------
-6.0
----------
[1 3 5]
----------
5
----------
[[-0.66666667 0.66666667 0.33333333]
[-0.08333333 -0.16666667 0.16666667]
[ 0.66666667 0.33333333 -0.33333333]]
----------
蒟蒻第一次写文章,希望有帮助。 这个只能帮助初步认识numpy,想要深入学习的话可以请教其他大佬。
|