Python数据分析之Numpy库(详细笔记)

1.创建ndarray数组:Numpy库能将序列数据(列表,元组,数组等其他数据类型)转换为ndarray数组
需要引入numpy库:import numpy as np
语法:np.array(data)
参数说明:data为需要转换为ndarray数组的序列
Numpy库还有一些函数可以创建一些特殊的数组:
arr=np.array()
arange: 类似内置的range函数,用于创建数组
ones: 创建指定长度或形状的全1数组
ones_like: 以令一个数组为参考,根据其形状和dtype创建全1数组
zeros、zeros_like:创建全0数组
empty、empty_like:创建没有具体值的数
eye、 identity: 创建正方形的N×N单位矩阵
**注意:用np.调用
2.ndarray对象属性:
.ndim: 秩,即数据轴的个数
.shape: 数组的维度
.size: 元素的总个数
.dtype: 数据类型
.itemsize:数组中每个元素的字节大小
注意:用arr.调用
3.ndarray数据类型:
常见的几种数据类型:浮点数(float)、整数(int)、复数(complex)、布尔值(bool)、字符串(string_)、python对象(object)
4.数组变换1-数组重塑、数组合并
1.数组重塑:对于定义好的数组,可以通过reshape方法改变其数据维度
语法:arr.reshape((x,y))
说明:arr:ndarray数组
x:行
y:列,可以设置成-1,表示数组的维度可以通过数据本身来判断
与reshape相反的方法是数据散开(ravel)或扁平化(flatten)
语法:arr.ravel()
说明:arr:ndarray数组

             语法:arr.flatten()
             说明:arr:ndarray数组

2.数组合并:用于几个数组间的操作,concatenate方法通过指定轴方向,将多个数组合并在一起。
***注意:轴用来为超过一维的数组定义的属性,二维数组拥有两个轴:
第0轴:(axis=0)沿着行的方向垂直向下
第1轴:(axis=1)沿着列的方向水平延伸
语法:np.concatenate([arr1,arr2],axis=0|1)
此外,vstack和hstack也可以进行数组合并:
语法:np.vstack((arr1,arr2))
np.hstack((arr1,arr2))
4.数组变换2-数组拆分、数组置换和轴对称:
1.数组拆分:方法:split
语法:np.aplit(arr,indices_or_sections,axis=0)
说明:arr:要切分的数组
indices_or_sections:如果是一个整数,就用该数平均切分,如果是数组,为沿轴切分的位置(左开右闭)
axis:为0,横线切分,为1,纵向切分
2.数组置换:transpose方法需要传入轴编号组成的元组 arr.transpose((1,0))
3.轴对称:arr.swapaxes(1,2)
5.Numpy随机数函数:
在numpy.random模块中,提供了多种随机数生成函数:
rand: 产生均匀分布的样本值
randint: 给定范围内去随机整数
randn: 产生正态分布的样本值
seed: 随机数种子
permutation:对一个序列随机排序,不改变原数组
shuffle: 对一个序列随机排序,改变原数组
normal: 产生具有正态分布的数组
2.3数组的运算:
1.通用函数: abs函数求绝对值,square函数求平方
arr=np.random.randn(3,3)
arr
np.abs(arr)
np.square(arr)
二元函数:需要传入两个数组并返回一个数组:add函数用于两个数组的相加,minimum函数可以计算元素最小值
arr1=np.random,randint(1,10,size=(5))
arr1
array([2,7,2,4,2])
arr2=np.random,randint(1,10,size=(5))
arr2
array([3,2,1,8,6])
np.add(arr1,arr2)
array([5,9,3,12,8])
np.minimum(arr1,arr2)
array([2,2,1,4,2])
有些函数可以返回两个数组,例如modf函数,可以返回数组元素的小数和整数部分:
arr=np.random.normal(2,4,size=(6,))
arr
np.modf(arr)
2.条件逻辑运算:
如果需要通过cond的值来选取arr1和arr2的值,当cond为True时,选择arr1的值,否则选择arr2的值,可以通过if语句判断来实现
创建数组:arr1=np.array([1,2,3,4])
arr1=np.array([5,6,7,8])
arr1=np.array([True,False,False,True])
条件逻辑:result=[(x if c else y) for x,y,c in zip(arr1,arr2,cond)]
result
[1,6,7,4]
where函数可以解决处理速度不快,无法用于多维数组的问题
result=np.where(cond,arr1,arr2)
result
array([])
sum函数求和,mean函数求算数平均数,std函数求标准差,min:最小值,max:最大值,
arr.sum() arr.mean() arr.std() arr.min() arr.max()
cumsum:所有元素的累计和 cumprod:所有元素的累计积
arr.cumsum() arr.cumprod()

dot函数用于矩阵乘法
np.dot(arr1,arr2)
array()
3.排序:sort方法
arr.sort()
arr
4.集合运算:使用np.unique方法来找出数组的唯一值
arr=np.array()
arr
np.unique(arr)
5.数组的读取:
可以通过np.loadtxt方法进行读取

  1. 数据的存储:arr=np.arrange().reshape
    arr
    np.savetxt()

猜你喜欢

转载自blog.51cto.com/14572091/2482254