1、numpy.array
基本操作与Python的list差不多
其他操作:
np.zeros(10,dtype=int) # 生成10个0,类型为整型
np.zeros(shape=(3,5),dtype=int) # 生成3行5列的类型为整型的矩阵
np.ones(10,dtype=int) # 生成10个5,整型
np.full(shape=(3,5),fill_value=666) # 生成3行5列,值为666的整型矩阵
2、numpy.arange
基本操作与range一样
numpy可传入浮点数
np.arange(0,9,0.2) # 从0到9,步长为0.2,生成array
3、numpy.linspace(包含起始终止点)
等长截取数列
np.linspace(1,10,2) # 从1到10,等长分为2个
4、numpy.random(前闭后开,取不到终止数)
np.random.randint(0,10,size=10) # 随机生成长度为10,从0到10的array
np.random.randint(0,10,size=(3,5)) # 随机生成3行5列,从0到10的array
np.random.seed (123) # 随机种子,使random出来的是指定的
np.random.random() # 类型为浮点型
np.random.normal(0,1,(3,5)) # 根据均值和方差产生浮点数,均值为0,方差为1,3行5列
5、numpy.concatenate([x,y]) # 拼接x,y
np.concatenate([x,y],axis=1) # axis为纬度,这里沿着行进行拼接,结果为2维,0为沿着列
6、numpy.vstack()\numpy.hstack() #在竖直或水平方向上进行堆叠
7、numpy.split(x,[3,7]) # 分割,起始分割点为3,结尾为7
np.vsplit(a,[2]) # 垂直分割,起始点为2
juper notebook中可以在末尾用"?"来查看文档
对于X=np.array()
属性:
1、X.ndim
查看纬度
2、X.shape
查看结构
3、X.size
查看大小
方法:
X.reshape(2,5) # 根据对象生成2行5列的矩阵,注意,不改变X自身
取值:
1、X[0,:] # 取第一行,列取从头到尾
计算
给定一个向量,让向量中每一个数乘以2
L=np.arange(10000)
A=np.array(2*e for e in L)
上面的操作等价于
A=2*L # 在list中不行,list是将两个数组连接起来
numpy中支持所有的直接数学计算,包括矩阵(对应元素计算),同时支持函数,比如A.cos()等
矩阵计算
矩阵乘法:A.dot(B)
矩阵转置:A.T
矩阵的逆:
np.linalg.inv(A) # 矩阵必须是方阵
np.linalg.pinv(A) # 伪逆矩阵,不需要是方阵,如2X8的矩阵求逆后就是8X2,与原矩阵相乘近乎为单位阵
矩阵的排序:A.sort() # 默认按照每一行排序,沿着列的方向排序,即axis=1
向量矩阵运算
向量与矩阵相加:
v=np.array([1,2])
v+A # 矩阵中每一行与向量对应相加
向量与矩阵相乘:
v.dot(A)
聚合计算
一组数据进行计算,结果为单独的值
求和:
np.sum() # 效率比公共库sum()高
np.sum(A,axis=0) # 每一列进行计算(沿着行进行计算,去行)
np.sum(A,axis=1) # 每一行进行计算(沿着列进行计算,去列)
求积:
np.prod()
求百分位:
np.percentile(A,q=50) # 小于50有多少百分位
最小值:
np.min()
中位数:
np.median()
平均值:
np.mean()
方差:
np.var()
标准差:
np.std()
索引与排序
np.argmin() # 返回最小值的索引值
np.argsort() # 将从小到大的数进行排序,并把索引值存入array
np.partition(x,3) # 将小于3的放左边,大于3的放右边,不进行排序
Fancy Indexing
取索引值相应的值组成列表
index=[3,5,8]
x[index]
即可得到,这里的index也可以是二维数据,得到对应的二维矩阵
取对应坐标对应的值组成列表
row=[0,1,2]
col=[0,1,2]
x[row,col]
即可得到想要的值
col=[True,False,True]
x[row,col]
也可以用这种方式取得想要的值
比较
x<3
返回bool型的数组
np.sum(x<3) # 计算小于3的数组的值,这个数组是布尔数组,计算的也就是小于3有多少个数
同理,可统计奇偶数
np.sum(x%2==0)
与或非的使用
np.sum((x>3)&(x<10)) # 与运算,和位运算相似
np.sum((x>3) | (x<3)) #或运算
np.sum(-(x>3)) #非运算
取值
x[x>2]
以上就是numpy的主要用法,一般用来处理简单的数据,复杂的数据,都先用pandas,然后转成numpy,最后用sklearn进行机器学习运算