一、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的改变,也就是深拷贝。
标签:矩阵,print,数组,np,numpy,axis From: https://www.cnblogs.com/bokeyuanjj/p/16848223.html