1.什么是Numpy
NumPy(Numerical Python 的简称)是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy 的前身是 Numeric,这是一个由 Jim Hugunin 等人开发的一个用于数值计算的扩展程序库。由于 Numeric 的一些问题,Jim Hugunin 创建了另一个库叫 SciPy,用于弥补 Numeric 的一些不足。之后,NumPy 开发人员将 Numeric 和 SciPy 整合成一个新的库——NumPy,这使得 NumPy 在功能上更加完善。
NumPy 的主要特点包括:
-
强大的 N 维数组对象:NumPy 使用一个 n 维数组对象 ndarray,可以方便地存储和操作大型多维数组和矩阵,并提供大量的数学函数库用于数组运算。
-
广播功能:广播是 NumPy 对不同形状数组进行数值计算的方式,它对 NumPy 数组的所有运算都适用。
-
整合 C/C++/Fortran 代码的能力:NumPy 的大量算法都经过优化,可以直接使用 C、C++ 或 Fortran 编写的代码,这样就可以避免 Python 自带的循环的低效率问题。
-
用于线性代数的函数库:NumPy 提供了很多用于线性代数的函数库,如矩阵乘法、矩阵求逆、求解线性方程组等。
-
用于统计学的函数库:NumPy 提供了许多用于统计学的函数,如计算均值、中位数、标准差等。
-
用于随机数的函数库:NumPy 提供了随机数生成的功能,可以生成符合各种分布的随机数。
-
用于快速傅里叶变换的函数库:NumPy 提供了快速傅里叶变换的函数库,用于信号处理和图像处理等领域。
NumPy 在科学计算、数据分析、机器学习等领域有着广泛的应用,是 Python 中最重要的科学计算库之一。
2.Numpy快速入门
NumPy中数组的维称作轴(axis),轴的个数叫做行(rank)。比如:[1, 2, 1],轴的个数为1,行(rank)就是1。
[[ 1., 0., 0.], [ 0., 1., 2.]] 上面这个数组有2行(也就是它是2维的),第一位维度的长度为2(也就是2行),第二维度的长度为3(也就是3列)
NumPy的数组类叫作ndarray,下面是ndarray的几个重要属性:
ndarray.ndim
:数组的轴的个数(就是维数)
ndarray.shape
:数组的维度(是一个元组)。比如矩阵有n行m列,那么shape为(n,m)
ndarray.size
:数组元素的个数。也是shape(n,m)元素的乘积
ndarray.dtype
:数组元素类型的描述。例如:numpy.int32, numpy.int16, and numpy.float64 ;
ndarray.itemsize
:数组每个元素的字节大小。对于类型为floa64的元素,itemsize为8(=64/8,1byte=8bit)
ndarray.data
:数组的缓存数据。通常情况下通过索引获取数据,不必要使用这个属性
以下是numpy的一些常用方法:
import numpy as np
a=np.arange(15) # 生成从0开始(包括0),到15(不包括15)的一维整数数组
b=a.reshape(3,5) # 一维数组重塑为二维数组
print(a)
print(b)
print("b.shape=",b.shape) # 打印数组的形状
print("b.ndim=",b.ndim) # 数组的维度数
print("b.dtype.name=",b.dtype.name) # 数组的数据类型名称
print("b.itemsize=",b.itemsize) # 数组中每个元素的大小(以字节为单位)
print("b