《利用python进行数据分析》笔记(一)

第4章 Numpy入门

基础

data = np.arange(10) :生成一个一维数组
data = np.array( [ [1,2,3,4],[5,6,7,8] ] ) 生成一个多维数组
data = np.arange(32).reshape((8,4))

data.shape
data.dtype
data.ndim
data.zeros((3,6))
《利用python进行数据分析》笔记(一)_第1张图片
3. 索引
(1) 切片索引。是原始数据的视图,修改切片,原始数据同样会被修改
若想要复制,则为:data[5:8].copy()
(2) 花式索引,data[ [1,5,7,2], [ 0,3,1,2] ] 为 data[1,5], data[5,3], data[7,1], data[2,2] 的数组。花式索引总是一维的。
(3) 布尔型索引 P133
4. !=,==,|,&,~ 反转条件:data[~(names != ‘Bob’)],负数索引
5. 转置
(1) data.T 转置,data.dot计算矩阵内积
(2) 高维数组转置,data.transpose() 费脑子

数据处理
  1. 通用函数ufunc
    (1) 一元ufunc:np.sqrt(data) , np.exp(data)
    (2) 二元ufunc:np.add(x,y) , np.maximum(x,y)
    (3) x, y = np.modf(data):返回浮点数数组的小数和整数部分
    (4) 接受out选项参数,可以在数组的原地进行操作
    《利用python进行数据分析》笔记(一)_第2张图片
    《利用python进行数据分析》笔记(一)_第3张图片

  2. 用数组表达式代替循环的做法,通常被称为 矢量化

  3. np.meshgrid() 生成网格点坐标矩阵,p145
    针对X的每一行都一样,Y的每一列都一样的这种强烈的规律性,numpy提供的numpy.meshgrid()函数可以让我们快速生成坐标矩阵X,Y

语法:X,Y = numpy.meshgrid(x, y)

输入的x,y,就是网格点的横纵坐标列向量(非矩阵)

输出的X,Y,就是坐标矩阵

  1. 表现条件逻辑 p147
    numpy.where : 三元表达式 x if codition else y 的矢量化版本
    result = np.where (cond, xarr, yarr) :当cond中的值为True时,选取xarr的值,否则为yarr的值。
    注意:xarr和yarr可以不必是数组,可以是标量值

  2. 聚合计算
    np.sum(a, axis = 1) / a.sum(axis = 1),计算行的平均值
    np.mean(a, axis = 0),计算列的平均值

mean和average都是计算均值的函数,在不指定权重的时候average和mean是一样的。指定权重后,average可以计算一维的加权平均值。
《利用python进行数据分析》笔记(一)_第4张图片

  1. 布尔型数组可用于计算
    bools = np.array([false, false, true, false])
    bools.any() --> True,检查数组中是否存在一个或多个True
    bools.all() --> False,检查数组中所有值是否都是True

  2. np.unique,找出数组中的唯一值并返回已排序的结果
    ints = np.array( [ 3, 3, 3, 2, 2, 1, 1, 4, 4 ] )
    np.unique( ints ) --> array[ 1, 2, 3, 4 ]

values = np.array( [ 6, 0, 0, 3, 2, 5, 6] )
np.in1d( values , [2, 3, 6] ) --> array( [ true, false, false, true, true, false, true ] )

  1. numpy.random模块是对python内置的random的补充 P159
线性代数
  1. x.dot(y) = np.dot(x,y)
  2. @符,x @ np.ones([ 6. , 15. ])
  3. numpy.linalg 行业标准线性代数库,如BLAS、LAPACK、lntel MKL(Math Kernel Library)
    《利用python进行数据分析》笔记(一)_第5张图片

你可能感兴趣的:(数据分析,Python)