一 概述
NumPy 是一个 Python 包。 它代表 “Numeric Python”。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。Numeric,即 NumPy 的前身,是由 Jim Hugunin 开发的。 他也开发了另一个包 Numarray ,它拥有一些额外的功能。 2005年,Travis Oliphant 通过将 Numarray 的功能集成到 Numeric 包中来创建 NumPy 包。 这个开源项目有很多贡献者。
NumPy是高性能科学计算和数据分析的基础包。部分功能如下:
ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。
用于对整组数据进行快速运算的标准数学函数(无需编写循环)。
用于读写磁盘数据的工具以及用于操作内存映射文件的工具。
线性代数、随机数生成以及傅里叶变换功能。
用于集成C、C++、Fortran等语言编写的代码的工具。
二 创建矩阵
NumPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型。 它描述相同类型的元素集合。 可以使用基于零的索引访问集合中的项目。ndarray中的每个元素在内存中使用相同大小的块。 ndarray中的每个元素是数据类型对象的对象(称为 dtype)。从ndarray对象提取的任何元素(通过切片)由一个数组标量类型的 Python 对象表示。 下图显示了ndarray,数据类型对象(dtype)和数组标量类型之间的关系。
基本的ndarray是使用 NumPy 中的数组函数创建的,如下所示:
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
上面的构造器接受以下参数:
序号参数及描述
1.
object 任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。
2.
dtype 数组的所需数据类型,可选。
3.
copy 可选,默认为true,对象是否被复制。
4.
order C(按行)、F(按列)或A(任意,默认)。
5.
subok 默认情况下,返回的数组被强制为基类数组。 如果为true,则返回子类。
6.
ndimin 指定返回数组的最小维数。
看看下面的例子来更好地理解。
import numpy as np #引入numpy库
#创建一维的ndarray对象
a = np.array([1,2,3,4,5])#创建二维的ndarray对象
a2 = np.array([[1,2,3,4,5],[6,7,8,9,10]])#创建多维对象以其类推
三 获取矩阵行列数(二维情况)
要获取ndarray对象的各维的长度,可以通过narray对象的shape属性。
importnumpy as np
a= np.array([[1,2,3,4,5],[6,7,8,9,10]])print(a.shape) #结果返回一个tuple元组 (2, 5)
print(a.shape[0]) #获得行数,返回 2
print(a.shape[1]) #获得列数,返回 5
四 矩阵的截取
4.1 按行列截取
矩阵的截取和list相同,可以通过[](方括号)来截取
importnumpy as np
a= np.array([[1,2,3,4,5],[6,7,8,9,10]])print(a[0:1]) #截取第一行,返回 [[1 2 3 4 5]]
print(a[1,2:5]) #截取第二行,第三、四、五列,返回 [8 9 10]
print(a[1,:]) #截取第二行,返回 [ 6 7 8 9 10]
4.2 按条件截取
按条件截取其实是在[](方括号)中传入自身的布尔语句。例如
importnumpy as np
a= np.array([[1,2,3,4,5],[6,7,8,9,10]])
b= a[a>6] #截取矩阵a中大于6的元素,范围的是一维数组
print(b) #返回 [ 7 8 9 10]
#其实布尔语句首先生成一个布尔矩阵,将布尔矩阵传入[](方括号)实现截取
print(a>6)#返回
[[False False False False False]
[False True True True True]]
按条件截取应用较多的是对矩阵中满足一定条件的元素变成特定的值。 例如将矩阵中大于6的元素变成1。
impo