欢迎

numpy

一、numpy是什么

将所有的数据通过numpy表示成数组的形式,也就是将他们进行向量化

因为numpy对数据所有的运算都是基于数组的,因此在运算之前需要将

数据表示成数组的形式

导入:import numpy as np

创建数组:np.array([1,2,3,4,5])

创建全0的数组:np.zeros((3,2))  #三行两列

#在numpy中数组可以是一维、二维(存放矩阵或者表格数据)或者更高维

获取数组的尺寸:a.shape()

>>>(m,n) #m表示的是一维的尺寸,即行数,n表示的是二维的尺寸,即列数

创建一个全部是1的数组:np.ones(m,n)

创建一个递增或者递减的数组:np.arange(m,n)

np.linspace(x,y,s)  #返回置于某个区间,等间距分割的数,x,y是区间的范围,s是输出 样本的总数

np.random.rand(x,y) #生成一个随机的数组

在numpy中,数组默认的数据类型是64位的浮点类型,可以在创建数组是,使用

dtype指定其他的类型  位数越小,所占用的空间小

>>>a = np.zeros((4,2),dtype=np.int32) #指定的整型的32位

使用astype转换数据类型

>>>np.dot(a,b) #将两个向量相乘

>>>.var() #返回数据的方差

>>>.std() #返回数据的标准方差

>>>a=np.array([[1,2,3]

[5,6,]])

>>>a.sum(axis=0) #当参数axis=0时,会将a中的没一个数组对应相加

>>>a.sum(axis=1) #axis=1,会将第一列的数组对应相加

 

切记在python中几次方法:a**2 not a^2

numpy中求sin、cos、tan、

>>>c=10*np.sin(a)

 

二、numpy中的乘法

a=np.array([[1,1],

      [0,1]])

b=np.arange(4).reshape((2,2))#也是矩阵,将随机生成的4个数分解成二行二列的矩阵

numpy中的乘法分为两类,一个是逐个相乘,一个是矩阵中的乘法

1.逐个相乘

>>> b=np.array([[1,1],[0,1]])
>>> c=np.arange(4).reshape((2,2))
>>> print(b*c)
[[0 1]
 [0 3]]
>>> print(b)
[[1 1]
 [0 1]]
>>> print(np.dot(b,c))
[[2 4]
 [2 3]]

 2.用矩阵的形式相乘

=np.dot(a,b)

另外一种形式: =a.dot(b) #第一个矩阵乘第二个矩阵

随机生成一个矩阵:

a=np.random.random((2,4))

 

三、一些函数

np.sum(a,) #求矩阵a的所有数字的和
np.min(a) #求矩阵中所有数据的最小值
np.max(a)#求矩阵a中所有数据的最大值

 如果需要指定行和列,则需要引入参数axis

print(np.min(a,axis=1)) #就是在每一行进行搜索
print(np.max(a,axis=0))#等于0就是每一列进行搜索

 

四、numpy中的索引

 

np.argmin(A) #索引其位置的最小值

np.argmax(A) #索引其位置的最大值

np.mean(A) #求整个矩阵的平均值

np.average(A)#也是求整个矩阵的平均值

np.median(A) #求中位数

np.cumsum(A) #求累加的值,第一个数是第一个数,第二个数是di

np.diff() #累差

np.sort(A)  #对数组逐行进行排序

np.transpose(A) #矩阵的转置

np.clip(A,5,9)  #A里边所有小于5的数等于5 ,大于9的数等于9

np.mean(A,axis=0、1) #指定对行或者列进行平均数的计算 输出的结果还是矩阵的形式

print(A[2][1]) #打印出的是一个数

print(n) #打印出的是第n行

print(:,1) #打印出第一列

print(A[1,1:2]) #打印出第一行1-2列的数

五、numpy中的数组合并

A =np.array([1,1,1])

B=np.array([2,2,2])

C=np.vstack((A,B))  #对数组进行一个上下合并

D=np.hstack(A ,B)  #代表着一个左右合并

A=np.array([1,1,1])[:,np.newaxis]

B=np.array([2,2,2])[:,np.newaxis] #对序列进行转置;

C=np.concatenate((A,B,B,A),axis=0)  #在列的维度进行合并,如果axis=1的话,就是在横向的维度进行合并

五、array的分割

A=np.arange(12).reshape(3,4)
np.split(A,2,axis=1) #按照列将数组分成两块,也就是横向分割,即将每一行都分开
np.split(A,3,axis=0) #进行横向分割,分成不同的三块,也就是说按照列的顺序进行分割

 

 split 只能进行相等的分割,不能进行不等的分割

怎么进行不等分割呢

print(np.vsplit(A,3)) #分成三块,纵向分割
print(np.hsplit(A,2)) #横向分割

 

 

 

六、numpy的赋值

 

直接变量赋值的话就是会导致一个变量改变其他变量也改变,但是用 b=a.copy()的话只是赋给值,后续a改变不会导致b的改变,也就是深拷贝。

 

posted @ 2022-11-01 16:35  bokeyuan-aa  阅读(132)  评论(0)    收藏  举报