python数据分析必备工具(1) numpy基本操作

注意:符号可能为中文下输入!!!

   numpy数组是一个多维数组对象
   导入: import  numpy as np

数组属性:

       建立一个一维数组
       ar=np.array([1,2,3,4,5,6])   ### 数组没有“,”分隔[1 2 3 4 5 6]
       ar.adim  ###数组的秩(数组维度的个数)
       ar.shape  ###数组的维度 对于n行m列的数组,shape(n, m)
       ar.size  ####数组元素的总数 对于n行m列的数组,size=n*m
       ar.dtype ###数组中元素的类型
       ar.itemsize  ###数组中每个元素的字节大小 int32为4个字节,
                                 float64为8个字节

创建数组

      array()函数 括号内可以是列表、元组、生成器
       1.通过range
       ar1=np.arange(10)
       ar2=np.array([range(10)])
        注意:
           ar3=np.array([[1,2,3,4,5,6],['a','b','c','d','e','f']])
                  此时ar3.dtype 为str 
            ar4=np.array([[1,2,3,4,5,6,7],['a','b','c','d','e','f']])
                   当列表长度不相等时,数组转化为一维数组
       2. linspace(开始,停止,num=,endpoint=True) 
              返回在[开  始,停止]上计算的num个均匀间隔的样本
              ar5=np.linspace(10,20,num=20)
              endpoint=True 即包含20,False则不包含20
              retstep =True  返回类型为元组,返回原数组以及step
                                    即:ar5[0]为原数组;ar5[1]为step
       3.zeros()/zeros_like(),ones(),ones_like()
               ar6=np.zeros((2,5),dtype=) 创建一个2行5列数值均为0的二维数组
               ar=np.array([1,2,3,4,5])
               ar7=np.zeros_like(ar)  生成一个和ar同样大小但是数据均为0的数组
               ones与ones_like()与zeros()和zeros_like()类似,ones填充1
       4.eye()
              np.eye(5) ###创建一个正方的单位矩阵,对角线值为1,   其余为0

numpy通用函数:

    1.数组形状(生成新的数组,并不更改原数组):
               ar1=np.array([[1,2,3,4,5,6],[7,8,9,10,11,12]])
               ar1.T  ###数组的转置
               ar1.reshape(6,2) ###更改行数与列数 **注意**:size必须相同
               np.reshape(ar1,(6,2))
                np.resize(ar1,(5,6))    #### 5*6>12 但是将ar1中数据排序,填充;;;
                np.resize(ar1,(2,4)) ####2*4<12  取ar1中前8个进行填充
                ar.resize(2,8)   ###更改原数组
                np.resize(ar,(2,8))  ###生成新数组
    2.数组的复制(深拷贝与浅拷贝):
                ar2=ar1    ar2,ar1 指向同一个对象
                ar2=ar1.copy()  新建一个对象,用ar2指向
    3.数据类型的转换
                ar1=ar.astype(“数值类型”)
    4.数组堆叠:
               a=np.arange(5)
               b=np.arange(5,10)
               np.hstack((a,b))  ####数组的横向连接
               np.vstack((a,b))  ###数组的竖向连接     **注意**:a,b列数相同,否则报错
               np.stack((a,b),axis=1) 
    5. 数组拆分:
                np.hsplit(ar,2)  ###横向拆分
                np.vsplit(ar,2)  ####纵向拆分
               
    6. 数据简单运算:
               + - * / **
               ar.mean()  ###求平均值
               ar.max()  ###求最大值
               ar.min()  ###求最小值
               ar.std() ###求标准差
               ar.var() ###求方差
               ar.sum() ###求和 axis=0 按列求和 axis=1按行求和
               ar.sort() ###默认升序,修改原数组

索引及切片:

    一维数组类似list
         ar=np.arange(10)
         ar[4]
        ar[:3]
        ar[::2]
    二维数组:
       ar=np.arange(16).reshape(4,4)
       ar[2] ##第三行
       ar[2][2] ##第三行第三个值
       ar[1:3] ## 第二行和第三行
       ar[2,2] ## 第三行第三列所对应的数值
       ar[行,列]
    布尔值索引及切片:
         ar=np.arange(12).reshape(3,4)
         保留为True的值
          ar[ar>5]
   数组索引及切片的值更改、复制:
         ar[5]=100 ###将第6行设置成100
         ar[:,5]=100 ### 将第6列设置成100
         b=ar.copy() 深拷贝 和python内存管理有关系

numpy随机数

     np.random.normal(size=(4,4,)) ###生成标准正态分布的4*4二维数组
     np.random.rand(d0,d1.......) ###生成一个[0,1)之间的随机浮点数N维浮点数组   ----均匀分布
     np.random.rand(2,4)  ###生成2行4列的浮点数数组
     np.random.randint(low,high=None,size=None) ###生成一个整数或N维整数数组
     若high不是None时取[low,high)的随机整数,否则取[0,low)之间的随机整数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值