机器学习与数据分析Pandas

Python机器学习及分析工具:Numpy篇

2018-08-27  本文已影响106人  殉道者之花火

  人工智能(Artificial Intelligence,AI)时代,简单易学,同时拥有着丰富模块库的Python成为时代的宠儿,活跃在人工智能的各个领域。我们可以借助Python库执行基本的机器学习任务。常用的Python科学库如下:


Numpy

Numpy即Numeric Python,是用来存储和处理大型多维矩阵的开源数值计算开源工具,由于机器学习算法在处理数据过程中大多涉及线性代数,需要用到矩阵的各种操作,故而,Numpy在机器学习领域有着较多的使用场景。


  Python语言提供数据类型列表(list)和array模块都可以当作数组使用。然而在处理数据过程中,我们一般不建议使用这两种方式,因为list的元素可以是任意对象,因此list中保存的是对象的指针,这样为了保存一个简单的[a,b],需要有2个指针和2个字符对象。对于大规模的数值运算来说,这种结构显然会对内存和CPU的性能造成极大的浪费。而array模块提供的array对象和列表不同,虽然可以直接保存数据,但由于它不支持多维,也没有各种运算函数,因此也不适合做数值运算。
  Numpy的出现弥补了这些不足,Numpy提供两种基本对象:
  ndarray(N-dimensional array object):存储单一数据类型的多维数组;
  ufunc(universal function object):对数组进行处理的函数;


import numpy as np



ufunc manual
round(_) 对元素进行四舍五入操作
floor(x) 对数组x所有元素向下取整
ceil(x) 对数组x所有元素向上取整
sum(x,axis=arg) 不给出axis参数时,表示对数组所有元素求和;axis=0时,对数组纵向求和;axis=1时进行横向求和。
mean(x,axis=arg) 返回数组元素算术平均值,axis参数的用法类似sum()
max/min(x,axis=arg) 返回元素的最大/最小值,axis参数的用法同上
std(x,axis=arg) 返回元素的标准差,axis参数的用法同上
var(x,axis=arg) 返回元素的方差,axis参数的用法同上
sort(x,axis=arg) 返回排序后的数组,axis参数的用法同上
where(condition,x,y) 当只给出条件,未给出参数x,y时,则输出满足条件元素的坐标,坐标以tuple形式给出;当条件参数都给出时,满足条件,输出x,反之输出y。
piecewise(x,condlist,funclist) 分段函数,参数x是一个保存自变量值的数组.condlist是一个长度为M的布尔数组列表,其中的每个布尔数组的长度都和数组x相同。funclist是一个长度为M或M+1的函数列表。

分段函数示例:

x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
# 数组x的元素中,小于4的乘3,大于6的乘2,其余都为0
np.piecewise(x, [x<4,x>6], [lambda x:x*3,lambda x:2*x])
随机数生成函数 特征
rand() 生成0~1之间的随机数
randn() 生成服从标准正态分布的随机数
uniform(x,y,num) 随机生成num个实数,它在 [x, y) 范围内
randint(low, high,( shape)) 依shape创建随机整数或整数数组,范围是[ low, high) seed(s) :随机数种子
shuffle(a) 根据数组a的第一轴进行随机排列,改变数组a
permutation(a) 根据数组a的第一轴进行随机排列, 但是不改变原数组,将生成新数组
choice(a[, size, replace, p]) 从一维数组a中以概率p抽取元素, 形成size形状新数组,replace表示是否可以重用元素,默认为False。

更多函数请参考Numpy函数库



  关于广播机制的详细讨论可以参考文章:
  广播(Broadcasting)
  Numpy二元运算的Broadcasting机制

上一篇 下一篇

猜你喜欢

热点阅读