若是你使用 Python 语言进行科学计算,那么必定会接触到 Numpy。Numpy 是支持 Python 语言的数值计算扩充库,其拥有强大的高维度数组处理与矩阵运算能力。除此以外,Numpy 还内建了大量的函数,方便你快速构建数学模型。python
本课程难度为通常,属于初级级别课程,适合具备 Python 基础,并对使用 Numpy 进行科学计算感兴趣的用户。数组
ndarray
介绍在 python 内建对象中,数组有三种形式:markdown
list
列表:[1, 2, 3]Tuple
元组:(1, 2, 3, 4, 5)Dict
字典:{A:1, B:2}其中,元组与列表类似,不一样之处在于元组的元素不能修改。而字典由键和值构成。dom
python 标准类针对数组的处理局限于 1 维,并仅提供少许的功能。python2.7
而 Numpy 最核心且最重要的一个特性就是 ndarray 多维数组对象,它区别于 python 的标准类,拥有对高维数组的处理能力,这也是数值计算过程当中缺一不可的重要特性。ide
Numpy 中,ndarray
类具备六个参数,它们分别为:函数
shape
:数组的形状。dtype
:数据类型。buffer
:对象暴露缓冲区接口。offset
:数组数据的偏移量。strides
:数据步长。order
:{'C','F'}
,以行或列为主排列顺序。下面,咱们来了解建立 ndarray 的一些方法。在 numpy 中,咱们主要经过如下 5 种途径建立数组,它们分别是:spa
在 numpy 中,咱们使用 numpy.array 将列表或元组转换为 ndarray 数组。其方法为:code
numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)
其中,参数:对象
object
:列表、元组等。dtype
:数据类型。若是未给出,则类型为被保存对象所需的最小类型。copy
:布尔来写,默认 True,表示复制对象。order
:顺序。subok
:布尔类型,表示子类是否被传递。ndmin
:生成的数组应具备的最小维数。下面,经过列表建立一个 ndarray 数组:
import numpy as np
np.array([[[1, 2, 3],[1, 2, 3],[1, 2, 3]],[[1, 2, 3],[1, 2, 3],[1, 2, 3]],[[1, 2, 3],[1, 2, 3],[1, 2, 3]]])
或者是列表和元组:
import numpy as np
np.array([(1,2),(3,4),(5,6)])
arange
方法建立除了直接使用 array 方法建立 ndarray,在 numpy 中还有一些方法能够建立一些有规律性的多维数。首先,咱们来看一看 arange()。arange() 的功能是在给定区间内建立一系列均匀间隔的值。方法以下:
numpy.arange(start, stop, step, dtype=None)
你须要先设置值所在的区间,这里为 `[开始, 中止)
,你应该能发现这是一个半开半闭区间。而后,在设置 step
步长用于设置值之间的间隔。最后的可选参数 dtype
能够设置返回ndarray
的值类型。
举个例子:
import numpy as np
# 在区间 [3, 7) 中以 0.5 为步长新建数组
np.arange(3, 7, 0.5, dtype=float32)
linspace
方法建立linspace
方法也能够像arange
方法同样,建立数值有规律的数组。linspace
用于在指定的区间内返回间隔均匀的值。其方法以下:
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
start
:序列的起始值。stop
:序列的结束值。num
:生成的样本数。默认值为50。endpoint
:布尔值,若是为真,则最后一个样本包含在序列内。retstep
:布尔值,若是为真,返回间距。dtype
:数组的类型。举个例子:
import numpy as np
np.linspace(0, 10, 10, endpoint=True)
np.linspace(0, 10, 10, endpoint=False)
ones
方法建立numpy.ones
用于快速建立数值所有为 1 的多维数组。其方法以下:
numpy.ones(shape, dtype=None, order='C')
其中:
shape
:用于指定数组形状,例如(1, 2)或 3。dtype
:数据类型。order
:{'C','F'}
,按行或列方式储存数组。举个例子:
import numpy as np
np.ones((2,3))
zeros
方法建立zeros 方法和上面的 ones 方法很是类似,不一样的地方在于,这里所有填充为 0。zeros 方法和 ones 是一致的。
numpy.zeros(shape, dtype=None, order='C')
其中:
shape
:用于指定数组形状,例如(1, 2)
或3
。dtype
:数据类型。order
:{'C','F'}
,按行或列方式储存数组。举个例子:
import numpy as np
np.zeros((3,2))
eye
方法建立numpy.eye 用于建立一个二维数组,其特色是k
对角线上的值为 1
,其他值所有为0
。方法以下:
numpy.eye(N, M=None, k=0, dtype=<type 'float'>)
其中:
N
:输出数组的行数。M
:输出数组的列数。k
:对角线索引:0(默认)是指主对角线,正值是指上对角线,负值是指下对角线。举个例子:
import numpy as np
np.eye(5, 4, 3)
咱们还能够从已知数据文件、函数中建立 ndarray
。numpy 提供了下面 5 个方法:
frombuffer(buffer)
:将缓冲区转换为 1 维数组。fromfile(file,dtype,count,sep)
:从文本或二进制文件中构建多维数组。fromfunction(function,shape)
:经过函数返回值来建立多维数组。fromiter(iterable,dtype,count)
:从可迭代对象建立 1 维数组。fromstring(string,dtype,count,sep)
:从字符串中建立 1 维数组。举个例子:
import numpy as np
np.fromfunction(lambda a, b: a + b, (5, 4))
ndarray
数组属性首先,咱们建立一个 ndarray
数组,这里仍是沿用本章节开头的例子。
import numpy as np
a = np.array([[[1, 2, 3],[1, 2, 3],[1, 2, 3]],[[1, 2, 3],[1, 2, 3],[1, 2, 3]],[[1, 2, 3],[1, 2, 3],[1, 2, 3]]])
ndarray 多维数组支持下面这些属性:
ndarray.T
ndarray.T
用于数组的转置,与 .transpose()
相同。
import numpy as np
a.T
ndarray.dtype
ndarray.dtype
用来输出数组包含元素的数据类型。
import numpy as np
a.dtype
ndarray.imag
ndarray.imag
用来输出数组包含元素的虚部。
import numpy as np
a.imag
ndarray.real
ndarray.real
用来输出数组包含元素的实部。
import numpy as np
a.real
ndarray.size
ndarray.size
用来输出数组中的总包含元素数。
import numpy as np
a.size
ndarray.itemsize
ndarray.itemsize
输出一个数组元素的字节数。
import numpy as np
a.itemsize
ndarray.nbytes
ndarray.nbytes
用来输出数组的元素总字节数。
import numpy as np
a.nbytes
ndarray.ndim
ndarray.ndim
用来输出数组尺寸。
import numpy as np
a.ndim
ndarray.shape
ndarray.shape
用来输出数组维数组.
import numpy as np
a.shape
ndarray.strides
ndarray.strides
用来遍历数组时,输出每一个维度中步进的字节数组。
import numpy as np
a.strides
Ndarray 是 numpy 的灵魂和核心,本章节介绍了 Ndarray 的生成或转换方法,这是了解并熟练使用 numpy 的前提。