Python数据分析之numpy学习

一.数据分析的概念

数据分析,把看似杂乱无序的数据从中提取共同点,总结研究出他们的共同规律
    数据分析三剑客:Numpy,Pandas,Matplotlib
    Numpy(Numerical Python)是python语言的的一个扩展程序库,支持大量维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数,
 而该模块也是其他数据分析模块(如pandas和scipy)的核心。

二.创建ndarray

1.使用np.array()创建
    一维数据创建:,array的首个参数一定是一个序列,可以是元组也可以是列表。
  
  

如果一维数组不是一个规律的有序元素,而是人为的输入,就需要array()函数创建了。


In [8]: arr1 = np.array((1,20,13,28,22))


In [9]: arr1


Out[9]: array([ 1, 20, 13, 28, 22])


In [10]: type(arr1)


Out[10]: numpy.ndarray


上面是由元组序列构成的一维数组。


 


In [11]: arr2 = np.array([1,1,2,3,5,8,13,21])    


In [12]: arr2


Out[12]: array([ 1,  1,  2,  3,  5,  8, 13, 21])


In [13]: type(arr2)


Out[13]: numpy.ndarray


上面是由列表序列构成的一维数组。

 

  

  二维数组的创建:二维数组的创建,其实在就是列表套列表或元组套元组
    

In [14]: arr3 = np.array(((1,1,2,3),(5,8,13,21),(34,55,89,144)))

In [15]: arr3

Out[15]:

array([[  1,   1,   2,   3],

[  5,   8,  13,  21],

[ 34,  55,  89, 144]])

上面使用元组套元组的方式。

 

In [16]: arr4 = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])

In [17]: arr4

Out[17]:

array([[ 1,  2,  3,  4],

[ 5,  6,  7,  8],

[ 9, 10, 11, 12]])

上面使用列表套列表的方式。

  

 

    多维数组的获取

  

  对该数组进行操作:

  

  

2. 使用np的routines函数创建 
  包含以下创建的方法:(1) np.ones(shape,dtype=None,order='C')

  

 

  (2)np.zeros(shape,dtype=None,order='C')

  

  (3)np.full(shape,fill_value,dtype=None,order='C')

   

  (4)np.linspace(start,stop,num=50,endpoint,restep=False,dtype=None)等差数列

  

  

  (5)np.arange([start,]stop,[step,]dtype=None)

  

(6)np.random.randint(low,high=None,size=None,dtype='I')

  

(7)np.random.randn(d0,d1,d2....dn) 标准正太分布

  

(8)np.random.random(size=None)
    生成0到1的随机数,左闭右开, np.random.seed(3)

  

三.ndarray的属性

    4个必须要记住的参数
        ndim:维度
        shape:形状(各维度的长度)
        size:总长度(各维度元素个数和)
        dtype:元素类型

  

  

四.ndarray的基本操作

1. 索引
    一维与列表完全一致 多维时同理

  

2. 切片
    一维与列表完全一致,多维时同理

  

  

  数据翻转:

  

  图片进行倒置:

  

3.变形
    使用arr.reshape()函数
    注意:.参数是tuple!
  
基本使用
    (1).将一维数组变形成多维数组

   

  (2)将多维数组转换成一维数组

  

  利用这个特性还可以进行图片倒置:

  

4. 级联:简单理解就是array的拼接
      np.concatenate()

  

 

  再看一下维度不一样的数组相拼接:

  

  

    注意:

    

    横向拼接arr和arr两个数组,但必须满足两个数组的行数相同。

   

5 切分
    与级联类似,三个函数完成切分工作:
    np.split(arr,行/列号,轴):参数2是一个列表类型
    np.vsplit()
    np.hsplit()

  

  照片的切分:

  

6. 副本
    所有的赋值运算不会为ndarray的任何元素创建副本.对赋值后的对象操作也会对原来的对象生效

  

五. ndarrary聚合操作

  

其他聚合操作:
    Function Name    NaN-safe Version    Description
np.sum    np.nansum    Compute sum of elements
np.prod    np.nanprod    Compute product of elements
np.mean    np.nanmean    Compute mean of elements
np.std    np.nanstd    Compute standard deviation
np.var    np.nanvar    Compute variance
np.min    np.nanmin    Find minimum value
np.max    np.nanmax    Find maximum value
np.argmin    np.nanargmin    Find index of minimum value
np.argmax    np.nanargmax    Find index of maximum value
np.median    np.nanmedian    Compute median of elements
np.percentile    np.nanpercentile    Compute rank-based statistics of elements
np.any    N/A    Evaluate whether any elements are true
np.all    N/A    Evaluate whether all elements are true
np.power 幂运算

六. 广播机制

    重要:ndarray广播机制的三条规则:缺失维度的数组将维度补
            充为进行运算的数组的维度.缺失的元素使用已有元素进行补充
            
            规则一:为缺失的维度补充1(进行运算的两个数组之间的维度
                          只能相差一个维度)
            规则二:缺失元素用已有值进行填充
            规则三:缺失维度的数组只能有一行或者一列

  

  

七. ndarray排序

    1.快速排序
    np.sort()与ndarray.sort()都可以.但有区别:
    np.sort()不改变输入
    ndarray.sort()本地处理,不占用空间,但改变输入

  

 

 

偶然看到的:

posted @ 2019-02-15 11:22  阿布_alone  阅读(390)  评论(0编辑  收藏  举报
TOP