基于Python的大数据分析基础(一)----NumPy

mac2024-11-14  11

 

1.NumPy简介及其使用

NumPy是一个功能强大的Python库,主要用于对多维数组执行计算,允许更高级的数据操作和数学计算。 它包括数学、逻辑、数组形状变换、排序、选择、I/O 、离散傅立叶变换、基本线性代数、基本统计运算、随机模拟等等。 机器学习模型:在编写机器学习算法时,需要对矩阵进行各种数值计算。例如矩阵乘法、换位、加法等。NumPy提供了一个非常好的库,用于简单(在编写代码方面)和快速(在速度方面)计算。NumPy数组用于存储训练数据和机器学习模型的参数。图像处理和计算机图形学:计算机中的图像表示为多维数字数组。NumPy成为同样情况下最自然的选择。实际上,NumPy提供了一些优秀的库函数来快速处理图像。例如,镜像图像、按特定角度旋转图像等。数学任务:NumPy对于执行各种数学任务非常有用,如数值积分、微分、内插、外推等。因此,当涉及到数学任务时,它形成了一种基于Python的MATLAB的快速替代。Numpy安装:在shell上使用以下命令:pip install numpy

2.Numpy基础知识

NumPy的数组类被称为ndarray。别名为 array。 请注意,numpy.array 与标准Python库类 array.array 不同,后者仅处理一维数组并提供较少的功能。 ndarray 对象则提供更关键的属性: ndarray.ndim:数组的轴(维度)的个数。在Python世界中,维度的数量被称为rank。ndarray.shape:数组的维度。这是一个整数的元组,表示每个维度中数组的大小。对于有n行和m列的矩阵,shape将是(n,m)。因此,shape元组的长度就是rank或维度的个数 ndim。ndarray.size:数组元素的总数。这等于shape的元素的乘积。ndarray.dtype:一个描述数组中元素类型的对象。可以使用标准的Python类型创建或指定dtype。另外NumPy提供它自己的类型。例如numpy.int32、numpy.int16和numpy.float64。ndarray.itemsize:数组中每个元素的字节大小。例如,元素为 float64 类型的数组的 itemsize 为8(=64/8),而 complex32 类型的数组的 itemsize 为4(=32/8)。它等于 ndarray.dtype.itemsize 。ndarray.data:该缓冲区包含数组的实际元素。通常,我们不需要使用此属性,因为我们将使用索引访问数组中的元素。

3.NumPy的使用及其方法

# -*- coding: utf-8 -*- """ Author : Jason """ __author__ = 'Jason' ''' NumPy是Python的一个用于科学计算的基础包,属于Python的第三方库。 NumPy包的核心是ndarray对象。它封装了n维同类数组,特别注意这里的数组必须是同类型。 个人理解: 结合现代中的矩阵最好理解了 使用前先安装 pip3 install numpy ''' import numpy as np data1 = [1,2,3,4,5] array1 = np.array(data1) print(type(array1),"\n",array1) ''' <class 'numpy.ndarray'> [1 2 3 4 5] ''' data2 = [[1,2,3],[4,5,6]] array2 = np.array(data2) print(array2) ''' [[1 2 3] [4 5 6]] ''' #查询内部元素类型 print(array1.dtype) # int32 print(array2.dtype) # int32 #转换数据类型 print(array1.astype("str")) # ['1' '2' '3' '4' '5'] print(array1.astype("str").dtype) # <U11 #数组的运算 print(array1 + 1) # [2 3 4 5 6] print(array1 * 2) # [ 2 4 6 8 10] print(array1 * array1) # [ 1 4 9 16 25] print(array1 / 5) #[0.2 0.4 0.6 0.8 1. ] #array数组的访问方式和Python列表的访问方式相同,下标索引切片等 print(array1[3]) # 4 print(array1[0:2]) # [1 2] print(array1[:2]) # [1 2] print(array1[-2:]) # [4 5] #矩阵元素的个数 print(array1.size) # 5 print(array1.itemsize) #一个元素的长度(以字节为单位) #NumPy自带函数创建ndarray数组 data1 = np.ones(4) # 自带函数ones(参数一维个数) data2 = np.zeros(4) # 自带函数zeros(参数一维个数) data3 = np.random.random(4) # 自带函数random.random(参数一维个数) print("data1,data2,data3:",data1,data2,data3) data4 = np.full(3,4) # [4 4 4] print(data4) # 创建一个长度为3,元素全为4的数组 data5 = np.eye(4) # 创建一个正方形4*5单位矩阵,对角线为1,其余为0 print(data5) data6 = np.linspace(0,10,3) ##第一个值为起始值,第二个值为结束值,第三个值为元素个数 print(data6) #[0 5 10] data7 = np.linspace((10,10,10),(0,0,0),3)#第一个值为起始值,第二个值为结束值,第三个值为元素个数,这里把一维数组看作一个元素比较好理解 print(data7) ''' [[10. 10. 10.] [ 5. 5. 5.] [ 0. 0. 0.]] ''' #数组维度变换 ''' np.reshape(shape) 不改变数组元素,返回一个shape形状的数组,原数组不变 np.resize(shape) 同上,但是是修改了原数组 np.swapaxes(ar1,ar2) 将数组n各维度中的两个维度进行调换 np.flatten() 对数组降维,返回一维数组,原数组不变 ''' #获取平均值mean(),最大值max(),最小值min(),和sum() print(array1.mean()) #3 print(array1.min()) #1 print(array1.max()) #5 print(array1.sum()) #15

参照:《基于Python的大数据分析基础及实战》

 

最新回复(0)