图解Python中数据分析工具包:Numpy

Python021

图解Python中数据分析工具包:Numpy,第1张

numpy是我学习python遇到的第一个第三方工具包,它可以让我们快速上手数据分析。numpy提供了向量和矩阵计算和处理的大部分接口。目前很多python的基础工具包都是基于numpy开发而来,比如 scikit-learn, SciPy, pandas, 还有 tensorflow。 numpy可以处理表格、图像、文本等数据,极大地方便我们处理和分析数据。本文主要内容来自于Jay Alammar的一篇文章以及自己学习记录。

原文地址: https://jalammar.github.io/visual-numpy/

使用过程中,如果希望 Numpy 能创建并初始化数组的值, Numpy 提供了 ones()、zeros() 和 random.random() 等方法。只需传递希望生成的元素数量(大小)即可:

还可以进行如下操作:

一般,需要数组和单个数字之间也可以进行运算操作(即向量和标量之间的运算)。比如说 data * 1.6 ,numpy利用一个叫做广播机制(broadcasting)的概念实现了这一运算。:

我们可以通过索引对numpy数据获取任意位置数据或者对数据切片

我们可以通过numpy自带的函数对数据进行一些想要的聚合计算,比如min、max 和 sum ,还可以使用 mean 得到平均值,使用 prod 得到所有元素的乘积,使用 std 得到标准差等等。

上述操作不仅可以应用于单维度数据,还可以用于多维度数据{(矩阵)。

同样可以使用ones()、zeros() 和 random.random()创建矩阵,只要写入一个描述矩阵维数的元组即可:

numpy还可以处理更高维度的数据:

创建更高维度数据只需要在创建时,在参数中增加一个维度值即可:

根据数组中数值是否满足条件,输出为True或False.

希望得到满足条件的索引,用np.where函数实现.

根据索引得到对应位置的值.

np.where也可以接受另两个可选择的参数a和b。当条件满足时,输出a,反之输出b.

获取数组最大值和最小值的索引可以使用np.argmax和np.argmin.

1、numpy.tofile()和numpy.fromfile()

保存为二进制格式,但是不保存数组形状和数据类型, 即都压缩为一维的数组,需要自己记录数据的形状,读取的时候再reshape.

2、numpy.save() 和 numpy.load()

保存为二进制格式,保存数组形状和数据类型, 不需要进行reshape

实例:

3、numpy.savetxt()和numpy.loadtxt()

np.savetxt(fname,array,fmt=’%.18e’,delimiter=None)

Parameter解释:

array:待存入文件的数组。

fmt:写入文件的格式

实例:

1、Pandas:是一个Python包,旨在通过“标记”和“关系”数据进行工作,简单直观。它设计用于快速简单的数据操作、聚合和可视化,是数据整理的完美工具。

2、Numpy:是专门为Python中科学计算而设计的软件集合,它为Python中的n维数组和矩阵的操作提供了大量有用的功能。该库提供了NumPy数组类型的数学运算向量化,可以改善性能,从而加快执行速度。

3、SciPy:是一个工程和科学软件库,包含线性代数,优化,集成和统计的模块。SciPy库的主要功能是建立在NumPy上,通过其特定子模块提供有效的数值例程,并作为数字积分、优化和其他例程。

4、Matplotlib:为轻松生成简单而强大的可视化而量身定制,它使Python成为像MatLab或Mathematica这样的科学工具的竞争对手。

5、Seaborn:主要关注统计模型的可视化(包括热图),Seaborn高度依赖于Matplotlib。

6、Bokeh:独立于Matplotlib,主要焦点是交互性,它通过现代浏览器以数据驱动文档的风格呈现。

7、Plotly:是一个基于Web用于构建可视化的工具箱,提供API给一些编程语言(Python在内)。

8、Scikits:是Scikits

Stack额外的软件包,专为像图像处理和机器学习辅助等特定功能而设计。它建立在SciPy之上,中集成了有质量的代码和良好的文档、简单易用并且十分高效,是使用Python进行机器学习的实际行业标准。

9、Theano:是一个Python软件包,它定义了与NumPy类似的多维数组,以及数学运算和表达式。此库是被编译的,可实现在所有架构上的高效运行。

10、TensorFlow:是数据流图计算的开源库,旨在满足谷歌对训练神经网络的高需求,并且是基于神经网络的机器学习系统DistBelief的继任者,可以在大型数据集上快速训练神经网络。

11、Keras:是一个用Python编写的开源的库,用于在高层的接口上构建神经网络。它简单易懂,具有高级可扩展性。

12、NLTK:主要用于符号学和统计学自然语言处理(NLP) 的常见任务,旨在促进NLP及相关领域(语言学,认知科学人工智能等)的教学和研究。

13、Gensim:是一个用于Python的开源库,为有向量空间模型和主题模型的工作提供了使用工具。这个库是为了高效处理大量文本而设计,不仅可以进行内存处理,还可以通过广泛使用NumPy数据结构和SciPy操作来获得更高的效率。