机器学习数据科学包(一)——numpy数据包

目录

1.numpy概述

2.矩阵构造方法:

3.矩阵形状维度相关方法:

4.矩阵基本操作

5.矩阵查找

6.矩阵遍历

7.矩阵合并

8.矩阵分割

9.矩阵浅拷贝与深拷贝


 

1.numpy概述

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组矩阵运算,此外也针对数组运算提供大量的数学函数库。

安装:python3 -m pip install numpy

导入:import numpy as np

2.矩阵构造方法:

  • np.array(列表[,类型])                                               创建矩阵
  • np.zeros((行,列)[,dype = np.int16])                       创建0矩阵
  • np.ones((行,列)[,dype = np.int16])                        创建1矩阵
  • np.empty((行,列)[,dype = np.int16])                      创建空矩阵(其实不能生成完全的空矩阵)
  • np.eye(数字)                                                              创建单位阵
  • np.diag([对角1,对角2...])                                         创建对角矩阵
  • np.arange(起始,终止,步长)                                   创建数组
  • np.linspace(起始,终止,段数)                                 创建线段
  • np.random.randint(最小值, 最大值, (行,列))               创建整数随机矩阵
  • np.random.random((行,列))                                     创建值为0-1随机矩阵

创建0矩阵

                                               

创建1矩阵

             

创建空矩阵(注意:不能生成完全空矩阵)

                                       

创建数组

                              

创建线段

                       

创建值为0-1随机矩阵

                    

3.矩阵形状维度相关方法:

  • a[:,np.newaxis])           行增加维度
  • a[np.newaxis,:])           列增加维度
  • a.reshape(行,列)            重定义形状
  • a.ndim()                            查看维度
  • a.shape()                          查看形状
  • a.size()                             查看容量
  • a.dtype()                           查看类型
  • a.flatten()                          将矩阵变为数组

创建矩阵并查看维度,形状,大小

           

查看类型

         

         

重定义形状

 

            

4.矩阵基本操作

  • a+b、a-b                                                  按位相加减
  • a*b/a**2                                                    按位乘
  • np.sin(矩阵)                                              按位求sin
  • a<3                                                           按位比较
  • np.dot(a,b)和a.dot(b)                             矩阵乘法
  • np.max(a)和np.max(a,axis=0/1)               最大值
  • np.min(a)和np.min(a,axis=0/1)                 最大值
  • np.sum(a)和np.sum(a,axis=0/1)               求和
  • np.median(a)和np.median(a,axis=0/1)     求中位数
  • np.mean(a)和np.mean(a,axis=0/1)           求平均值
  • np.argmin(a)和np.argmax(a)                    找最大值最小值索引
  • np.cumsum(a)和np.diff(a)                         按位累加/按位累减
  • np.nonzeros(a)                                          查找非0项
  • np.sort(a)                                                   行内排序
  • a.T 和 np.transpose(a)                              矩阵的逆
  • np.clip(A,min,max)                                    修剪矩阵

以上方法axis=0表示按列,axis=1表示按行

按位减

                       

矩阵按位乘

 

                                               

矩阵求sin

 

                                    

按位比较

                                                     

矩阵乘法

                      

最大值,最小值,求和

                     

                     

最大值/最小值索引

                      

平均值

                       

中位数

                                                  

累加

                                         

        

累减

                                                  

查找非0项

                                            

行内排序

                      

矩阵求逆

                                   

矩阵修剪

 

                                    

5.矩阵查找

与Python序列一致 查找某元素A[i][j]

  • A[1,2]        查找索引1,2的元素
  • A[:,i ]      查找第i列元素元素

                                                

                        

 

                                                         

 

                                                         

 

                                                       

6.矩阵遍历

与Python序列一样 用for遍历

  • for row in A: print(row)            按行打印
  • for col in A.T: print(col)            按列打印
  • for item in A.flat: print(item)    打印全部元素

按行打印

                                                       

按列打印

                                            

打印全部元素

                                       

7.矩阵合并

  • np.vstack(a,b...)                                      垂直合并
  • np.hstack(a,b...)                                      水平合并
  • np.concatenate((a,b...),axis=0/1)           合并

注:合并操作正相反,0代表行1代表列。为了方便记最好还是使用vstack与hstack合并。

垂直合并

                                       

 

水平合并(数组的水平合并相当于连接)

                       

 

数组的逆实际上不翻转,想要翻转成列向量,需要加1维度

                                             

                               

 

列向量的水平合并

                               

列向量的垂直合并

             

列向量的水平合并

              

8.矩阵分割

  • np.vsplit(a,块数)                              垂直分割
  • np.hsplit(a,块数)                              水平分割
  • np.split(a,块数,axis=0/1)            平均分割
  • np.array_split(a,块数,axis=0/1)       不平均分割

注:分割操作正相反,0代表行1代表列。为了方便记最好还是使用vsplit与hsplit分割。

垂直分割与水平分割

                                      

 

平均分割(按列)

                      

 

平均分割(按行)

                                

平均分割,如果分割不了会报错

                     

  

不平均分割

                       

 

9.矩阵浅拷贝与深拷贝

与Python数组相同,矩阵是可变数据结构,直接相当于传递引用

深拷贝: a.copy()

10.读写操作

numpy可以把数组或者矩阵保存为csv文件,也可以将csv文件整体读取为一个数组或矩阵。

import numpy as np
# 1.csv ==> matrix
my_matrix = np.loadtxt(open("D:\\test.csv","rb"), delimiter=",",usecols=None,skiprows=0)


# 2.matrix ==> csv
ny.savetxt("new.csv", my_matrix, delimiter=',')

其中delimiter=','只分隔符,usecols可以选择指定列,skiprows只从哪行开始存储。

具体实例

其他注意点:

1. a.sort() 直接对a进行排序没有返回值,np.sort(a) 不对a进行排序,但返回值为经过排序的a

2.np.random.seed() 如果指定seed则每次生成的随机数相同

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值