Python——numpy模块
import numpy as np
#------------------------------------------------------------------------numpy的常用方法-----------------------------------------------------------
#----------------------------------numpy创建矩阵----------------------------------------------------------------------
#---np.array()---将括号内的列表(或元祖)转化为矩阵
a = np.array([[11,2,33],
[22,3,44]],dtype = np.int) #dtype定义数据是以浮点型(float) 还是整形(int) 形式存在
a = np.zeros((3,4)) #生成一个3行4列的矩阵,内部元素都为0
a = np.ones((3,4)) #生成一个3行4列的矩阵,内部元素都为1
#除此之外,还有empty,arange(生成一个有序数列,如np.arrange(10,20,2):生成一维矩阵,内部元素为10—20之间步长为2的数)
a = np.arange(12).reshape((3,4)) #生成一个3行4列的元素为1—12的矩阵————即可用reshape进行矩阵行列数的更改操作
a = np.linspace(1,10,6) #生成一个一维矩阵,元素为1—10之间均匀分布6个数
print(a)
#------------------------------------------------numpy的基础运算--------------------------------------------------------
a = np.array([10,20,30,40])
b = np.arange(4)
#----------------------矩阵的加法------------------
c = a-b
print(c)
#------------------------------------------矩阵的乘法-------------------------------------------------------------------
c = 10*np.sin(a) #此公式表示将a 的各个元素取sin值再乘10
print(c)
a = np.array([[1,1],
[0,1]])
#---reshape---设置矩阵的行和列---
b = np.arange(4).reshape((2,2))
c = a*b #两个矩阵元素逐个相乘
#---np.dot()---矩阵运算的相乘 此公式也可写为 c_dot = a.dot(b)
c_dot = np.dot(a,b)
print(c)
print(c_dot)
#-----对矩阵内的元素进行判断---返回True或False
print(b<3) #判断矩阵中哪些元素小于3
#-----numpy中的一些内置运算方法---
a = np.random.random((2,4)) #生成一个2行4列的矩阵,元素为0—1之间的随机数(random.random()用于生成0~1之间的浮点数,不包含0和1)
print(a)
#---np.sum()---矩阵元素的和---
print(np.sum(a,axis = 1)) #返回a矩阵每一列的和,即可通过axis = 1 & 0 来设置求矩阵每一列或每一行的和
#---np.min()---以矩阵的形式返回矩阵元素中的最小值---
print(np.min(a,axis = 0)) #返回矩阵中每一列的最小值
#---np.max()---以矩阵的形式返回矩阵元素中的最大值---
print(np.max(a,axis = 1))
A = np.arange(2,14).reshape((3,4)) #构造一个3行4列,元素为2—14的矩阵
print(A)
#----np.argmin---返回矩阵中元素的最小值的索引---
print(np.argmin(A))
#---np.argmax---返回矩阵中元素的最大值的索引---
#---np.avra()---返回矩阵元素的平均值---
print(np.mean(A)) #或者 np.average(A)
print(A.mean()) #或者 A.average()
#---np.median()---返回矩阵元素的中位数---
#---np.cumsum()---返回矩阵元素的累加值---
print(np.cumsum(A))
#---np.diff()---返回矩阵元素的累差值---
#---np.sort()---对矩阵逐行(只在行内操作)进行排序---
#---np.transpose()---&---A.T---对矩阵进行转置---
#---np.clip()---传入最大值和最小值,矩阵中大于最大值的设置为最大值,小于最小值的等于最小值,其余元素保持不变---
#-----------------------------对矩阵元素进行索引-------------------------------------------------------------------------------
#---通过索引获取array的值---
A = np.arrange(3,15)
print(A[3]) #一维返回的十一个元素,多维返回的是某一行
A.reshap((3,4))
print(A[1][1]) #返回第一行第一列的元素,或者A[1,1]
print(A[2,:]) #返回第二行的所有数
print(A[:,1]) #返回第一列的所有数
print(A[1,1:4]) #返回第一行第一到第四个元素
#---for循环默认迭代行---
for row in A:
print(row) #将A按行打印
for column in A.T:
print(column) #通过对A矩阵转置实现随矩阵行的转置
for item in A.flat:
print(item) #通过 .flat 将矩阵转化为一维从而实现对矩阵每一个元素进行迭代
#-------------------------------矩阵的合并-------------------------------------------------------------------------------
#--------np.vstack()---纵向合并-------
A = ([1,1,1])
B = ([2,2,2])
print(type(A))
print(np.vstack((A,B)))
#-------np.hstack()----横向合并-----
print(np.hstack((A,B)))
#----np.newaxis将A变成一个纵向的矩阵---
print(A[:,np.newaxis]) #给序列A加一个纵向的维度 , A[np.newaxis,:] 给序列A加一个横向的维度
#---np.concatenate()------多个矩阵的横向或纵向合并---
C = np.concatenate((A,B,B,A),axis = 0) #多个矩阵的纵向合并
print(C)
#---------------------------------矩阵的分割----------------------------------------------------------------------------------
A = np.arange(12).reshape((3,4))
#---np.split()----将矩阵进行横向或纵向分割------此方法只能进行等距分割----
B = np.split(A,2,axis = 0) #将矩阵A纵向分割为两部分,可通过设置axis = 1 设置横向分割,第二个参数设置分割成为几部分
#矩阵A列数为4 ,若用此方法将将列分为三份,则会报错
#--------np.arra_split()---可进行不等距的分割
#----------np.vsplit()------对矩阵进行横向分割---
C = np.vsplit(A,3)
#--------np.hsplit()---------对矩阵进行纵向分割---
D = np.hsplit(A,2)
#---------------------------------矩阵的赋值------------------------------------------------------------------------------------
A = np.arange(4)
#-----------等号赋值---------
B = A
C = A
D = B
A[0] = 11 #此时B,C,Dd都会跟着改变
D[1:3] = [22,33] #此时A,B,C 都会跟着改变
#-------copy()---深度复制---可解除矩阵之间的关联---
E = A.copy()
A[0] = 12 #此时E不会跟着改变