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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图解Python中数据分析工具包:Numpy相关的知识,希望对你有一定的参考价值。

参考技术A 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:写入文件的格式
实例:

python数据分析工具包——Numpy

    在本科阶段,我们常用的科学计算工具是MATLAB。下面介绍python的一个非常好用而且功能强大的科学计算库——Numpy。

  • a powerful N-dimensional array object(一个强大的N维数组对象)
  • sophisticated (broadcasting) functions (先进的(广播?)函数)
  • tools for integrating C/C++ and Fortran code(集成的C / C++和Fortran代码工具)
  • useful linear algebra, Fourier transform, and random number capabilities(有用的线性代数,傅立叶变换和随机数能力)

    以上是官方文档的介绍,具体资料可以按参考这个网站: http://www.numpy.org/

    依旧是pip install numpy安装这个包。我们在ipython中举一些例子来学习它的一些常用操作。当然在此之前,建议先了解一下矩阵等相关的数学知识,就当温习一下大学的线代高数部分了。

 1 #导入numpy
 2 >>> import numpy as np
 3 #生成一个指定内容的数组
 4 >>> a = np.arange(15).reshape(3, 5)
 5 >>> a
 6 array([[ 0,  1,  2,  3,  4],
 7        [ 5,  6,  7,  8,  9],
 8        [10, 11, 12, 13, 14]])
 9 >>> a.shape     #数组行列数
10 (3, 5)
11 >>> a.ndim    #数组维度
12 2
13 >>> a.dtype.name  #数组中元素类型
14 int64
15 >>> a.itemsize   #数组中每个元素的字节大小
16 8
17 >>> a.size   #数组元素的总数
18 15
19 >>> type(a)  #输出a的属性
20 <type numpy.ndarray>
21 #直接给定元素生成数组
22 >>> b = np.array([6, 7, 8])
23 >>> b
24 array([6, 7, 8])
25 >>> type(b)
26 <type numpy.ndarray>

 

    numpy可以生成指定的数组。

 

 1 C:\Users\Administrator\Desktop
 2 λ ipython
 3 Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)]
 4 Type copyright, credits or license for more information
 5 IPython 6.2.1 -- An enhanced Interactive Python. Type ? for help.
 6 
 7 In [1]: import numpy as np
 8 
 9 In [2]: a=np.zeros([3,4])      #生成全零阵
10 
11 In [3]: a
12 Out[3]:
13 array([[0., 0., 0., 0.],
14        [0., 0., 0., 0.],
15        [0., 0., 0., 0.]])
16 
17 In [4]: b=np.ones([3,4])   #生成全1阵
18 
19 In [5]: b
20 Out[5]:
21 array([[1., 1., 1., 1.],
22        [1., 1., 1., 1.],
23        [1., 1., 1., 1.]])
24 
25 In [6]: c=np.random.rand(3,4)     #生成随机阵
26 
27 In [7]: c
28 Out[7]:
29 array([[0.36417168, 0.24336724, 0.78826727, 0.42894367],
30        [0.77198615, 0.95897315, 0.25628233, 0.53995372],
31        [0.02777746, 0.25093856, 0.14544893, 0.10475779]])
32 
33 In [8]: d=np.eye(3)     #生成单位阵
34 
35 In [9]: d
36 Out[9]:
37 array([[1., 0., 0.],
38        [0., 1., 0.],
39        [0., 0., 1.]])
40 
41 In [10]: e=np.mat([[1,2,3],[4,5,6],[7,8,9]])   #矩阵化
42 
43 In [11]: e
44 Out[11]:
45 matrix([[1, 2, 3],
46         [4, 5, 6],
47         [7, 8, 9]])
48 
49 In [12]: f=np.power(e,2)    #计算N次幂
50 
51 In [13]: f
52 Out[13]:
53 matrix([[ 1,  4,  9],
54         [16, 25, 36],
55         [49, 64, 81]], dtype=int32)
56 
57 In [14]: g=f.T     #求转置矩阵
58 
59 In [15]: g
60 Out[15]:
61 matrix([[ 1, 16, 49],
62         [ 4, 25, 64],
63         [ 9, 36, 81]], dtype=int32)
64 
65 In [16]:

    下面对array()和mat()做一个区分。初学者很容易混淆。

    np.array(a)  是将列表数组化, 它与另一个narray的乘法并不是按照矩阵乘法进行的,而是对应元素相乘 。而mat(),在上面的例子可以清楚地看出来,他生成的对象是一个matrix。即将数组矩阵化。对矩阵使用shape()方法,会返回矩阵的维度,而数组则会返回它的行和列。详细资料可以参考官方文档。

以上是关于图解Python中数据分析工具包:Numpy的主要内容,如果未能解决你的问题,请参考以下文章

这可能是我见过最好的NumPy图解教程!

收藏 | 清晰易懂的NumPy 图解教程!

图解NumPy,这是理解数组最形象的一份教程了

Python数据分析: Numpy技巧 (4/4)

Python数据分析: Numpy技巧 (3/4)

图解NumPy:常用函数的内在机制