数据分析Python——Numpy
Numpy
Numpy 是 Python 的一个科学计算包,包含了多维数组以及多维数组的操作。
Numpy 的核心是 ndarray 对象,这个对象封装了同质数据类型的n维数组。起名 ndarray 的原因就是因为是 n-dimension-array 的简写。
ndaarray:只能有一种数据类型,而且每个元素占用内存空间大小相同。
import numpy as np 加载numpy包
NumPy 要求数组必须包含同一类型的数据。如果类型不匹配,NumPy 将会向上转换(包含范围越大,在上层)
强制类型用dtype参数:np.array([3.14, 4, 2, 4], dtype=\'int64\')
类型转换,请使用.astype()方法(首选)或类型本身作为函数。
ndarray 与 python 原生 array 有什么区别
NumPy 数组在创建时有固定的大小,不同于Python列表(可以动态增长)。更改ndarray的大小将创建一个新的数组并删除原始数据。
NumPy 数组中的元素都需要具有相同的数据类型,因此在存储器中将具有相同的大小。数组的元素如果也是数组(可以是 Python 的原生 array,也可以是 ndarray)的情况下,则构成了多维数组。
NumPy 数组便于对大量数据进行高级数学和其他类型的操作。通常,这样的操作比使用Python的内置序列可能更有效和更少的代码执行。
越来越多的科学和数学的基于Python的包使用NumPy数组,所以需要学会 Numpy 的使用。
Numpy 的矢量化(向量化)功能优点:
矢量化代码更简洁易读
更少的代码行通常意味着更少的错误该代码
更接近地类似于标准数学符号(使得更容易,通常,以正确地编码数学构造)
矢量化导致更多的“Pythonic”代码。如果没有向量化,我们的代码将会效率很低,难以读取for循环。
创建常用的数组:
创建一个全0数组:zeros();np.zeros_like(a) #按照a的形状,创建一个形状一样的0数组
创建全1数组:ones()
单位矩阵:eye()
对角矩阵:diag()
设定具体值:full()
设置空值和无穷大:np.nan;np.inf,有一点要尤其注意的是: np.nan, np.inf 都是浮点类型,结合ndarray中的数据类型必须是相同的, 也就是说数组中如何有一个数据是空值,那么所有的数据都只能是浮点型。
随机数组:
np.random.randint(1, 10, (3, 6)) --随机生成1到10的3行6列数组
正态分布随机数
np.random.uniform() --均匀分布, 在这个区间范围之内, 任一点出现概率相同
np.random.randn() --标准正态分布
np.random.normal(4, 2, (10, 3)) # 均值, 标准差, 形状 --正态分布
np.random.standard_t(3, (3, 3)) --t分布
np.random.f(1, 2, (3, 3)) --F分布
np.random.chisquare(1, (3, 3)) --卡方分布
np.random.binomial(10, 0.5, 20) --二项分布
设置随机数种子
np.random.seed(100)
np.random.randint(10, size=(3, 3))
创建一个线性序列的数组
arange([start,] stop[, step,]):特点: 可以设置开始位置,终止位置和步长,但产生数字的数量不方便控制
np.linspace(开始位置, 终止位置, 产生数量):特点: 可以设置开始位置和终止位置以及产生数量,但不方便控制步长
nddaray常用属性
查看数据形状:shape
查看维度:ndim
查看数组元素个数:size
查看类型:dtype
数组的变形
数组的变形也是一类非常有用的操作。数组变形最灵活的实现方式是通过 reshape() 函数来实现。
请注意,如果希望该方法可行,那么原始数组的大小必须和变形后数组 的大小一致。如果满足这个条件,reshape 方法将会用到原始数组的一 个非副本视图。
技巧:在使用 reshape 时,可以将其中的一个维度指定为 -1,Numpy 会自动计算出它的真实值
拉伸成一维数组(数组的平铺):ravel()
转置 交换行和列:.T
数组的拼接:concatenatetenate()
数据的分裂:
将一个数组分成几个较小的数组
既然可以将多个数组进行对堆叠,自然也可以将一个数组拆分成多个小数组。
使用split,可以指定均匀切割成几份,也可以指定沿着哪个位置进行切割, 还可以指定沿着哪个轴进行切割.
np.split(ary, indices_or_sections, axis=0)
广播机制
Numpy 可以转换这些形状不同的数组,使它们都具有相同的大小,然后再对它们进行运算。