文章目录
1. Numpy 介绍
Numpy(Numerical Python),是 Python 科学计算的基础包。Mumpy 主要提供了以下内容:
- 快速高效的多维数组对象 ndarray。
- 对数组执行元素级计算以及直接对数组执行科学计算的函数。
- 线性代数、傅里叶变换及随机数生成的功能。
- 将 C、C++、Fortran 代码集成到 Python 的工具。
- 读写硬盘上基于数组数据集的工具。
Numpy 是用于科学计算的基础模块,不但能够完成科学计算的任务,而且能够被用作高效的多维数据容器,可以用于存储和处理大型矩阵。Numpy 的数据容器可以保存任意类型的数据,所以可以整合各种数据。
2. Numpy 数组
Python 提供了一个 array 模块。array 和 list 不同,它直接保存数值,和 C 语言的一位数组比较类似。但是由于 Python 的 array 模块不支持多维,也没有各种运算函数,所以也不适合做数值运算。Numpy 提供了一种存储单一数据类型的多维数组——ndarray。
Numpy 提供了两种基本对象:ndarray(N-dimensional Array Object)和 ufunc(Universal Function Object)。ndarray 是存储单一数据类型的多维数组,而 ufunc 是能够对数组进行处理的函数。
2.1 数组属性
常用属性 | 说明 |
---|---|
shape | 返回 tuple,返回数组维度的元组。如:(m,n) ,表示 m 行 n 列 |
ndim | 返回 int,表示数组的维度 |
size | 返回 int,表示数组中元素的个数 |
dtype | 返回 data-type,表示数组元素的数据类型 |
itemsize | 返回 int,表示一个数组元素的大小(以字节为单位) |
nbytes | 返回 int,表示数组元素消耗的总字节数 |
2.2 创建数组
numpy.array(object,dtype=None,cope=True,order='K',subok=False,ndimn=0)
# 导入Numpy库
import numpy as np
# 创建一维数组
arr1 = np.array([1,2,3,4])
print('创建的一维数组为:',arr1)
# 创建二维数组
arr2 = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print('创建的二维数组为:\n',arr2)
# 查看数组属性
print('数组的维数为:',arr2.ndim)
print('数组的维度为:',arr2.shape)
print('数组的元素个数为',arr2.size)
print('数组的元素类型为',arr2.dtype)
print('数组每个元素的大小为',arr2.itemsize)
print('数组元素消耗的总字节数为',arr2.nbytes)
# 重新设置数组的shape属性
arr2.shape = 4,3
print('重新设置 shape 后的 arr2 为:\n',arr2)
上面的例子都是创建一个 Python 序列,然后通过 array 函数转换为数组,这样做效率不高,因此 Numpy 提供了许多专门用来创建数组的函数。
# 使用arange函数创建数组(开始值,终值,步长(不包括终值))
print('使用arange函数创建的数组为:\n',np.arange(0,1,0.1))
# 使用linspace函数创建数组(开始值,终值,元素个数(包括终值))
print('使用linspace函数创建的数组为:\n',np.linspace(0,1,10))
# 使用logspace函数创建等比数列(开始值(1——10^1),终值,元素个数(包括终值)))
print('使用logspace函数创建等比数列为:\n',np.logspace(1,2,10))
# 特殊数组
print('使用zeros函数创建的全0数组为:\n',np.zeros((2,3)))
print('使用ones函数创建的全1数组为:\n',np.ones((2,3)))
print('使用eye函数创建的数组为:\n',np.eye(3))
print('使用diag函数创建的数组为:\n',np.diag([1,2,3,4]))
数组数据类型转换
# 数组数据类型转换
print('转换结果为:',np.float(42))
print('转换结果为:',np.int8(42.0))
print('转换结果为:',np.bool(42))
print('转换结果为:',np.bool(0))
print('转换结果为:',np.float(True))
print('转换结果为:',np.float(False))
2.3 生成随机数
# 生成随机数([0,1))
print('生成随机数组为:\n',np.random.random(10))
print('生成服从均匀分布的随机数组为:\n',np.random.rand(3,4))
print('生成服从正态分布的随机数组为:\n',np.random.randn(3,4))
# 生成随机数(给定范围(不包括上限))
print('生成给定上下限的随机数组为:\n',np.random.randint(2,10,size=[2,5]))