初探Numpy

来源:互联网 发布:防御矩阵攻略 编辑:程序博客网 时间:2024/05/15 23:45

零. 什么是Numpy

Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用。其实,list已经提供了类似于矩阵的表示形式,不过numpy为我们提供了更多的函数。

一. 获取并安装Numpy

1.1 安装Python发行版

对于许多用户来说,尤其是在Windows上,最简单的方法就是下载一个Python发行版,其中包括所有的关键包。

这里写图片描述

如何安装Python发行版?点击这里,参看【二. 环境配置】部分内容。
【提示】如果你的开发工具是PyCharm,那么你可以在设置里面查看你所安装的包,也可以按照如下操作添加所需要的包:
File–>Settings–>[Project PycharmProjects]–>[Project Interpreter],显示已经安装的包,点击右侧[+]符号可以添加依赖包。

这里写图片描述

接着,输入包的名称,选择包可以查看相关信息,点击Install Package即可。

这里写图片描述

1.2 通过pip安装

大多数主要项目都将官方软件包上传到Python Package索引。它们可以使用Python的标准pip 包管理器安装在大多数操作系统上。

请注意,您需要在你的系统上安装Python和pip。

你可以通过以下命令来安装软件包:

python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose

二. Numpy数组

2.1 ndarray属性

NumPy数组最大的特点就是一个多维数组对象,称为ndarray。ndarray是一种同构数据多维容器,也就是说,其中所有的元素必须是相同类型的。每个数组都有一个shape(一个表示各维度大小的元祖)和一个dtype(一个用于说明数组数据类型的对象)。

关于NumPy数组有几点必需了解的:

  • NumPy数组的下标从0开始。
  • 同一个NumPy数组中所有元素的类型必须是相同的。

一个ndarray对象重要的属性是:

  • ndarray.ndim: 阵列的轴数(维度)。在Python世界中,维度的数量被称为等级。
  • ndarray.shape: 数组的尺寸。这是一个整数的元组,指示每个维度中数组的大小。对于具有n行m列的矩阵,shape将是(n,m)。shape因此元组的长度
    是等级或维数 ndim。
  • ndarray.size: 数组元素的总数。这等于元素的产物shape。
  • ndarray.dtype: 一个描述数组中元素类型的对象。可以使用标准的Python类型创建或指定dtype。另外NumPy提供它自己的类型。numpy.int32,numpy.int16和numpy.float64是一些例子。
  • ndarray.itemsize: 数组中每个元素的字节大小。例如,类型元素的数组float64有itemsize8(=
    64/8),而其中一个类型complex32有itemsize4(= 32/8)。这相当于ndarray.dtype.itemsize。
  • ndarray.data: 包含数组的实际元素的缓冲区。通常,我们不需要使用这个属性,因为我们将使用索引设施访问数组中的元素。

例2.1.1:创建ndarray,并打印出其维度,各维度大小,类型,值。

>>> import numpy as np  # 导入模块numpy并以np作为别名>>> data = np.array([[1, 2, 3], [4, 5, 6]])>>> print data.ndim  # 输出data的维度2>>> print data.shape  # 输出data的各维度的长度(2L, 3L)>>> print data.dtype  # 输出data的数据类型int32>>> print data  # 输出data的值[[1 2 3] [4 5 6]]

除了np.array之外,还有一些函数可以新建数组,如zeros和ones分别可以创建指定长度或形状的全0或全1数组,empty可以创建一个没有任何具体指的数组。[^对角矩阵]

例2.1.2:使用zeros、ones、eye、empty函数创建数组。

>>> print np.zeros((3,4))  # 生成24列值全为0的数组[[ 0.  0.  0.  0.] [ 0.  0.  0.  0.] [ 0.  0.  0.  0.]]>>> print np.ones((3,4))  # 生成34列值全为1的数组[[ 1.  1.  1.  1.] [ 1.  1.  1.  1.] [ 1.  1.  1.  1.]]>>> print np.eye(3)  # 生成对角矩阵[[ 1.  0.  0.] [ 0.  1.  0.] [ 0.  0.  1.]] >>> print np.empty((2,3,2))  # 生成未经初始化的三维数组array([[[  3.30203557e-316,   3.30204348e-316],        [ -2.30219128e-207,   9.46643641e+032],        [  1.79006441e+245,  -3.05236051e+222]],       [[  4.42232319e-301,   3.53590670e-111],        [  7.39387869e-218,  -8.96112260e-206],        [  8.55755696e-116,   6.29600287e+051]]])

值得注意的是np.empty返回的都是一些未经初始化的垃圾值。

数组创建函数

这里写图片描述

参考文档:Python之路——numpy各函数简介之生成数组函数(Array creation routines)

2.2 ndarray数据类型

三. 参考资料

  • 《利用Python进行数据分析》麦金尼,机械工业出版社,2013-10-30
  • Numpy官方教程
  • Python中的Numpy入门教程
  • 给深度学习入门者的Python快速教程 -Numpy和Matplotlib篇
  • numpy.eye()生成对角矩阵