从这一篇开始我们将陆续介绍Python中有关数据分析的知识。
目录
1. 为什么要学NumPy2. ndarray数组对象2.1 ndarray数组与Python原生数组的区别2.2 ndarray数组与matrix的区别
1. 为什么要学NumPy
NumPy是Python中用于高性能科学计算和数据分析的库。NumPy中提供了大量的库函数和操作,可以帮助人们轻松地进行数值计算。先用以下例子来说明。
如果我们想计算数组 A 的平方与数组 B 的立方之和,即 A^2 + B^3 。如果采用Python原生数组来实现,就不得不采用循环的方式:
1def py_sum(): 2 A = [2, 3, 5, 10, 9] 3 B = [1, 7, 6, 4, 2] 4 C = [] 5 for i in range(len(A)): 6 C.append(A[i]**2 + B[i]**3) 7 return C 8 9py_sum()
而如果采用NumPy,则非常简单:
1import numpy as np 2 3def np_sum(): 4 A = np.array([2, 3, 5, 10, 9]) 5 B = np.array([1, 7, 6, 4, 2]) 6 return A**2 + B**3 7 8np_sum()
在上面使用NumPy进行求和的例子中,我们使用 numpy 模块中的 array() 函数构建了一个 ndarray 数组对象——它是NumPy包的核心。 ndarray 数组对象配备了大量的函数和运算符,因此可以快速地进行乘方、求和等运算。
正是因为NumPy提供的 ndarray 数组对象以及用于快速操作数组的函数和API,它才广泛地应用于数据分析和科学计算的领域,比如:
机器学习模型: 在编写机器学习算法时,需要对矩阵进行各种数值计算。例如矩阵乘法、换位、加法等。NumPy提供了一个非常好的库,用于简单(在编写代码方面)和快速(在速度方面)计算。NumPy数组用于存储训练数据和机器学习模型的参数。
图像处理和计算机图形学: 计算机中的图像表示为多维数字数组。NumPy成为同样情况下最自然的选择。实际上,NumPy提供了一些优秀的库函数来快速处理图像。例如,镜像图像、按特定角度旋转图像等。
数学任务: NumPy对于执行各种数学任务非常有用,如数值积分、微分、内插、外推等。因此,当涉及到数学任务时,它形成了一种基于Python的MATLAB的快速替代。
2. ndarray数组对象
2.1 ndarray数组与Python原生数组的区别ndarray 数组封装了python原生的同数据类型的n维数组,为了保证其性能优良,其中有许多操作都是代码在本地进行编译后执行的。 NumPy数组 和 标准Python Array(数组) 之间有几个重要的区别:
NumPy数组在创建时具有固定的大小 ,与Python的原生数组对象(可以动态增长)不同。 更改ndarray的大小将创建一个新数组并删除原来的数组。
NumPy数组中的元素都需要具有相同的数据类型 ,因此在内存中的大小相同。 例外情况:Python的原生数组里包含了NumPy的对象的时候,这种情况下就允许不同大小元素的数组。 NumPy数组有助于对大量数据进行高级数学和其他类型的操作。 通常,这些操作的执行效率更高,比使用Python原生数组的代码更少。
越来越多的基于Python的科学和数学软件包使用NumPy数组; 虽然这些工具通常都支持Python的原生数组作为参数,但它们在处理之前会还是会将输入的数组转换为NumPy的数组,而且也通常输出为NumPy数组。
换句话说,为了高效地使用当今科学/数学基于Python的工具(大部分的科学计算工具),你只知道如何使用Python的原生数组类型是不够的——还需要知道如何使用NumPy数组。
2.2 ndarray数组与matrix的区别除了 ndarray 之外,NumPy还提供了另一种的矩阵类型 matrix 对象。
通常, ndarray 类旨在成为用于多种数值计算的通用n维数组,而 matrix 类则专门用于线性代数计算。实际上,两者之间只有少数几个关键区别。
维数
数组的维数可以使1,2,3,…
矩阵的维数只能是2维
矢量处理(一维数组)
对于数组,向量形状1xN,Nx1和N都是不同的东西。像A [:,1]这样的操作返回形状N的一维数组,而不是形状Nx1的二维数组。一维数组上的转置不起任何作用。
对于矩阵,一维数组总是向上转换为1xN或Nx1矩阵(行或列向量)。A [:,1] 返回形状为Nx1的二维矩阵。
操作符 * , dot , multiply()
对于数组, * 表示逐元素乘法,而 dot() 函数用于矩阵乘法。
对于矩阵, * 表示矩阵乘法,而 multiply() 函数用于逐元素乘法。
构造方法
数组构造函数为: array([1,2,3], [4,5,6])
矩阵构造函数为: matrix("[1 2 3; 4 5 6]")
一些属性
ndarray 有一个 .T 属性,它返回数据的转置。
矩阵还具有 .H , .I 和 .A 属性,分别返回矩阵的共轭转置,逆矩阵和 asarray() 。