python数值计算扩展——NumPy

一、NumPy简介

NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。

以下为官方英文介绍:

NumPy is the fundamental package for scientific computing with Python. It contains among other things:

(1)a powerful N-dimensional array object

(2)sophisticated (broadcasting) functions

(3)tools for integrating C/C++ and Fortran code

(4)useful linear algebra, Fourier transform, and random number capabilities

Besides its obvious scientific uses, NumPy can also be used as an efficient multi-dimensional container of generic data. Arbitrary data-types can be defined. This allows NumPy to seamlessly and speedily integrate with a wide variety of databases.

二、python环境注意事项

目前python3使用也比较多,有的同学可能安装了两个版本,包括python2,Mac 在终端中输入python命令后,输出的信息还是Python 2.7。

如何让系统默认使用python3呢?按照以下步骤设置即可:

(1) 终端输入:open ~/.bash_profile,打开.bash_profile文件。

(2)修改.bash_profile文件内容 ,添加如下两行PATH="/Library/Frameworks/Python.framework/Versions/3.6/bin:$"

export PATH

(4)重新生效.bash_profile文件

source .bash_profile

经过以上四步,终端输入phtyon,出现以下内容即修改成功。

三、NumPy安装

配置好python环境后,在命令行输入:from numpy import*,如果提示以下错误,我们需要手动安装NumPy:

(1)pip安装

我们使用pip安装NumPy,前提是已经安装pip,mac默认是没有安装pip的。

如果用的是macOS自带的python2.7,直接终端输入:sudo easy_install pip,安装。

如果使用的Python3,终端输入:curlhttps://bootstrap.pypa.io/get-pip.pypython3。

安装完成后,查看pip的版本和路径。由于我分别安装了python2和3,所以也分别安装了pip的不同版本,如下:

注意:

1)使用pip install XXX

新安装的库会放在这个目录下面

python2.7/site-packages

2)使用pip3 install XXX

新安装的库会放在这个目录下面

python3.6/site-packages

在使用python3执行程序,那么就不能import python2.7/site-packages中的库。

(2)安装NumPy

终端输入:sudo pip3 install -U numpy

安装成功输出以下log:

四、NumPy使用

(1)基础

NumPy的主要对象是同类型的多维数组。它是一张表,所有元素(通常是数字)的类型都相同,并通过正整数元组索引。在NumPy中,维度称为轴。轴的数目为rank。

例如,3D空间中的点的坐标[1, 2, 1]是rank为1的数组,因为它具有一个轴。该轴的长度为3。在下图所示的示例中,数组的rank为2(它是2维的)。第一维度(轴)的长度为2,第二维度的长度为3。

[[ 1., 0., 0.],

[ 0., 1., 2.]]

NumPy的数组的类称为ndarray。别名为array。请注意,numpy.array与标准Python库的类array.array不同,后者仅处理一维数组并提供较少的功能。ndarray对象的更重要的属性是:

ndarray.ndim

数组的轴(维度)的个数。在Python世界中,维度的数量被称为rank。

ndarray.shape

数组的维度。这是一个整数的元组,表示每个维度中数组的大小。对于具有n行和m列的矩阵,shape将是(n,m)。因此,shape元组的长度就是rank或维度的个数ndim。

ndarray.size

数组元素的总数。这等于shape的元素的乘积。

ndarray.dtype

描述数组中元素类型的对象。可以使用标准Python类型创建或指定dtype。另外NumPy提供了自己的类型。例如numpy.int32、numpy.int16和numpy.float64。

ndarray.itemsize

数组中每个元素的字节大小。例如,元素为float64类型的数组的itemsize为8(=64/8),而complex32类型的数组的comitemsize为4(=32/8)。它等于ndarray.dtype.itemsize。

ndarray.data

该缓冲区包含数组的实际元素。通常,我们不需要使用此属性,因为我们将使用索引访问数组中的元素。

举例说明:

对应输出如下:

(2)数组创建

有几种方法来创建数组,可以使用array函数从常规Python列表或元组中创建数组。得到的数组的类型从序列中元素的类型推导出。

(3)数组打印

当你打印一个数组,NumPy以类似嵌套列表的形式显示它,但是呈以下布局:

最后的轴从左到右打印

次后的轴从顶向下打印

剩下的轴从顶向下打印,每个切片通过一个空行与下一个隔开

一维数组被打印成行,二维数组成矩阵,三维数组成矩阵列表。

(4)数组运算

数组上的算术运算符使用元素级别。将创建一个新数组并用结果填充。

与许多矩阵语言不同,乘法运算符*的运算在NumPy数组中是元素级别的。可以使用dot函数或方法执行矩阵乘积:

某些操作(如+=和*=)可以修改现有数组,而不是创建新数组。

此外,NumPy还有很多强大的功能,大家如果有需要可以到官方参考文档。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180128G0D4XR00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券