python numpy模块

Numpy

NumPy是高性能科学计算和数据分析的基础包。它是pandas等其他各种工具的基础。

NumPy的主要功能:

  ndarray,一个多维数组结构,高效且节省空间
  无需循环对整组数据进行快速运算的数学函数
  读写磁盘数据的工具以及用于操作内存映射文件的工具
  线性代数、随机数生成和傅里叶变换功能
  用于集成C、C++等代码的工具

安装方法:pip install numpy
引用方式:import numpy as np



创建ndarray:np.array()
应用场景:
  例1:已知若干家跨国公司的市值(美元),将其换算为人民币
  例2:已知购物车中每件商品的价格与商品件数,求总金额
ndarray还可以是多维数组,但元素类型必须相同
常用属性:
  

T        数组的转置(对高维数组而言)
dtype    数组元素的数据类型
size     数组元素的个数
ndim     数组的维数
shape    数组的维度大小(以元组形式)

 

dtype:
  bool_, int(8,16,32,64), uint(8,16,32,64), float(16,32,64)
类型转换:astype()
创建ndarray:

array()    将列表转换为数组,可选择显式指定dtype
    >>> np.array([1, 2, 3])
    array([1, 2, 3])
arange()    range的numpy版,支持浮点数
    >>> np.arange(3.0)
    array([ 0.,  1.,  2.])
linspace()    类似arange(),第三个参数为数组长度
    >>> np.linspace(2.0, 3.0, num=5)
    array([ 2.  ,  2.25,  2.5 ,  2.75,  3.  ])
zeros()    根据指定形状和dtype创建全0数组
    >>> np.zeros((2, 1))
    array([[ 0.],
           [ 0.]])
ones()    根据指定形状和dtype创建全1数组
    np.ones((2, 1))
    array([[ 1.],
           [ 1.]])
empty()    根据指定形状和dtype创建空数组(随机值)
    np.empty([2, 2], dtype=int)
    array([[-1073741821, -1067949133],
       [  496041986,    19249760]])                     #random
eye()    根据指定边长和dtype创建单位矩阵
    >>> np.eye(2, dtype=int)
    array([[1, 0],
           [0, 1]])
reshape()    分解,合并
    >>> a = np.array([[1,2,3], [4,5,6]])
    >>> np.reshape(a, 6)
    array([1, 2, 3, 4, 5, 6])
    >>> np.reshape(a, (3,-1))       
    array([[1, 2],
           [3, 4],
           [5, 6]])

 

数组和标量之间的运算
  a+1 a*3 1//a(整除) a**0.5
同样大小数组之间的运算
  a+b a/b a**b
数组的索引

a[5]    
a2[2][3]    
a2[2,3]    # 第几维数组的第几个索引,跟上面的写法得到结果一样
数组的切片
a[5:8]    
a[:3] = 1    # 切片的数组都赋值1
a2[1:2, :4]    # 第二个数组,0到3的索引
a2[:,:1]    # 所有数组,索引为0的值
a2[:,1]    # 所有数组,索引为1的值
与列表不同,数组切片时并不会自动复制,在切片数组上的修改会影响原数组。    
b = a[:4]
b[-1] = 250
【解决方法:copy()】# 这样b是一个新的内存地址
b = a[:4].copy()
b[-1] = 250

 

布尔型索引

给一个数组,选出数组中所有大于5的数。
  a[a>5]
原理:
  a>5会对a中的每一个元素进行判断,返回一个布尔数组
  布尔型索引:将同样大小的布尔数组传进索引,会返回一个由所有True对应位置的元素的数组

给一个数组,选出数组中所有大于5的偶数。
  a[(a>5) & (a%2==0)]
给一个数组,选出数组中所有大于5的数和偶数。
  a[(a>5) | (a%2==0)]

 

花式索引

对于一个数组,选出其第1,3,4,6,7个元素,组成新的二维数组。
  a[[1,3,4,6,7]]

对一个二维数组,选出其第一列和第三列,组成新的二维数组。
  a[:,[1,3]]

 

通过用函数

 

  一元函数:

    abs #绝对值

    sqrt #开方

    ceil #向上取整  

    floor #向下取整

    rint #四舍五入

    trunc #ceil

    modf #把小数整数分开

      >>> np.modf([0, 3.5])
      (array([ 0. , 0.5]), array([ 0., 3.]))
      >>> np.modf(-0.5)
      (-0.5, -0)

  isnan
    0/0 是nan

  isinf

In [60]: a = np.arange(1,5)

In [61]: b = np.arange(1,5)

In [62]: b[-1]=0

In [63]: a/b
C:\Python35\Scripts\ipython:1: RuntimeWarning: divide by zero encountered in tru
e_divide
Out[63]: array([ 1., 1., 1., inf])
In [64]: c=a/b
C:\Python35\Scripts\ipython:1: RuntimeWarning: divide by zero encountered in tru
e_divide
# 结合布尔索引取值
In [65]: c[~np.isinf(c)]
Out[65]: array([ 1., 1., 1.])

 


二元函数:
  maximum
    np.maximum(a,b) #得到这俩列表中有最大的数的元素
  minimum        #最小

 

数学和统计方法
  sum 求和
  mean 求平均数
  std 求标准差
  var 求方差
  min 求最小值
  max 求最大值
  argmin 求最小值索引
  argmax 求最大值索引

 

np.random 随机数
  rand 给定形状产生随机数组(0到1之间的数)
  randint 给定形状产生随机整数
  choice 给定形状产生随机选择
  shuffle 与random.shuffle相同
  uniform 给定形状产生随机数组

posted @ 2017-08-30 11:31  王宇夫  阅读(335)  评论(0编辑  收藏  举报