首页 > 编程 > Python > 正文

Python科学计算包numpy用法实例详解

2020-02-22 23:10:28
字体:
来源:转载
供稿:网友

本文实例讲述了Python科学计算包numpy用法。分享给大家供大家参考,具体如下:

1 数据结构

numpy使用一种称为ndarray的类似Matlab的矩阵式数据结构管理数据,比python的列表和标准库的array类更为强大,处理数据更为方便。

1.1 数组的生成

在numpy中,生成数组需要指定数据类型,默认是int32,即整数,可以通过dtype参数来指定,一般用到的有int32、bool、float32、uint32、complex,分别代表整数、布尔值、浮点型、无符号整数和复数

一般而言,生成数组的方法有这么几种:

以list列表为参数生成(用tolist方法即可转换回list):

In[3]: a = array([1, 2, 3])In[4]: aOut[4]: array([1, 2, 3])In[5]: a.tolist()Out[5]: [1, 2, 3]

指定起点、终点和步长生成等差序列或等比数列:

In[7]: a = arange(1, 10, 2)In[8]: aOut[8]: array([1, 3, 5, 7, 9])
In[13]: a = linspace(0, 10, 5)In[14]: aOut[14]: array([ 0. ,  2.5,  5. ,  7.5, 10. ])
In[148]: a = logspace(0, 3, 10) # 0表示起点为10^0,3表示起点为10^3,基数通过base参数指定In[149]: aOut[148]: array([  1.    ,   2.15443469,   4.64158883,  10.    ,     21.5443469 ,  46.41588834,  100.    ,  215.443469 ,     464.15888336, 1000.    ])

从迭代器中生成:

In[17]: iter = (i for i in range(5))In[18]: a = fromiter(iter, dtype=int32)In[19]: aOut[19]: array([0, 1, 2, 3, 4])

从函数中生成:

In[156]: def f(i, j):...   return abs(i-j)...   In[157]: fromfunction(f, (4, 4))Out[156]: array([[ 0., 1., 2., 3.],    [ 1., 0., 1., 2.],    [ 2., 1., 0., 1.],    [ 3., 2., 1., 0.]])

还可以用zeros、ones、empty等函数快速创建数组。

矩阵视为二维数组:

In[24]: b = array([arange(5), arange(1, 6), arange(2, 7)])In[25]: bOut[25]: array([[0, 1, 2, 3, 4],    [1, 2, 3, 4, 5],    [2, 3, 4, 5, 6]])

根据相同的方法可以拓展到更高维。

另外,我们还可以生成自定义数据格式的数组(称为结构数组),用来记录电子表格或数据库中一行数据的信息:

In[61]: t = dtype([('name', str, 40), ('number', int32), ('score', float32)])In[62]: tOut[62]: dtype([('name', '<U40'), ('number', '<i4'), ('score', '<f4')])In[63]: students = array([('Tom', 10, 80), ('Jenny', 11, 90.5), ('Mike', 9, 98.5)], dtype=t)In[64]: studentsOut[64]: array([('Tom', 10, 80.0), ('Jenny', 11, 90.5), ('Mike', 9, 98.5)],    dtype=[('name', '<U40'), ('number', '<i4'), ('score', '<f4')])In[65]: students[1]Out[65]: ('Jenny', 11, 90.5)

后面我们会看到pandas提供了一种更精致的方法处理记录。

1.2 数组的索引

简单的下标索引:

In[30]: a[2]Out[30]: 2In[31]: b[2, 1]Out[31]: 3            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表