《Python 数据操作教程:NUMPY 教程与练习》由会员分享,可在线阅读,更多相关《Python 数据操作教程:NUMPY 教程与练习(26页珍藏版)》请在金锄头文库上搜索。
1、NumPy(“Numerical Python”或“Numeric Python”的缩写)是 Python 中对数组和矩阵进行快速数学计算的最基本的软件包之一。在处理多维数据时它也非常有用。集成C、C+和FORTRAN工具是一件幸事。它还提供了许多傅里叶变换 (FT) 和线性代数函数。为什么使用 NumPy 而不是列表?人们可能会想到为什么我们应该更喜欢 NumPy 中的数组,而不是我们可以创建具有相同数据类型的列表。如果这句话也引起了你的注意,那么以下原因可能会说服你:1.2. 1、Numpy 数组具有连续的内存分配。因此,如果将相同的数组存储为列表,则与数组相比将需要更多的空间。3.4.
2、2、它们的使用速度更快,因此比列表更高效。5.6. 3、他们打交道更方便。NumPy 与 PandasPandas 构建在 NumPy 之上。换句话说,pandas 需要 Numpy 才能使其工作。所以 Pandas 并不是 Numpy 的替代品。相反,pandas 提供了额外的方法或提供了在 Python 中处理数字和表格数据的更简化的方式。导入numpy首先,您需要导入 numpy 库。可以通过运行以下命令来导入 numpy:将 numpy 导入为 np这是导入 numpy 的通用方法,别名为“np”。如果未提供别名,那么要从 numpy 访问函数,我们将编写numpy.function。
3、为了方便起见,引入了别名“np”,以便我们可以编写np.function。下面列出了 numpy 的一些常用函数 -功能 任务 大批 创建 numpy 数组 这就是我 数组的维数 形状 数组的大小(行数和列数) 尺寸 数组中元素的总数 数据类型 数组中元素的类型,即int64、character 重塑 在不改变原始形状的情况下重塑数组 调整大小 重塑数组。也改变原来的形状 排列 在数组中创建数字序列 商品尺寸 每个项目的大小(以字节为单位) 诊断 创建对角矩阵 虚拟堆栈 垂直堆叠 栈 水平堆叠一维数组使用 numpy 可以使用np.array创建数组:a = np.array(15,25,14
4、,78,96)aprint(a)aOutput: array(15, 25, 14, 78, 96)print(a)Output: 15 25 14 78 96请注意,np.array 中存在方括号。缺少方括号会导致错误。要打印数组,我们可以使用print(a)。更改数据类型np.array( ) 有一个附加的dtype参数,通过该参数可以定义元素是整数、浮点还是复数。a.dtypea = np.array(15,25,14,78,96,dtype = float)aa.dtype最初 a 的数据类型是int32,修改后变为float64。1.2. int32指的是没有小数点的数字。32 表示
5、数字可以在 -2147483648 和 2147483647 之间。类似地,int16 表示数字可以在 -32768 到 32767 范围内3.4. float64指的是带有小数位的数字。创建数字序列如果您想创建数字序列,那么使用np.arange,我们可以获得我们的序列。要获取从 20 到 29 的数字序列,我们运行以下命令。b = np.arange(start = 20,stop = 30, step = 1)barray(20, 21, 22, 23, 24, 25, 26, 27, 28, 29)在np.arange中,终点始终被排除。np.arange提供了一个步长选项,它定义了两
6、个连续数字之间的差异。如果未提供步骤,则默认采用值 1。假设我们要创建一个初始项为 20、公差为 2 的等差级数30 被排除在外。c = np.arange(20,30,2) #30 is excluded.carray(20, 22, 24, 26, 28)需要注意的是,在 np.arange( ) 中,stop 参数始终被排除。数组中的索引需要注意的是,Python 索引从 0 开始。索引的语法如下 -1.2. xstart:end:step:数组 x 中的元素从开始到结束(但不包括结束),默认步长值为 1。3.4. xstart:end:数组 x 中的元素从开始到结束(但不包括结束)5.
7、6. xstart::元素从末尾开始7.8. x:end:从开头到结尾的元素(但不包括结尾)如果我们想提取第三个元素,我们将索引写为 2,因为它从 0 开始。x = np.arange(10)x2x2:5x:2x1:2xOutput: 0 1 2 3 4 5 6 7 8 9x2Output: 2x2:5Output: array(2, 3, 4)x:2Output: array(0, 2, 4, 6, 8)x1:2Output: array(1, 3, 5, 7, 9)请注意,在x2:5 中,选择从第 2 个索引开始到第 5 个索引(不包括)的元素。如果我们想要更改从索引 7 开始到索引 7(
8、不包括 7)的所有元素的值,步长为 3,即 123,我们可以这样写:x:7:3 = 123xarray(123, 1, 2, 123, 4, 5, 123, 7, 8, 9)为了反转给定的数组,我们编写:x = np.arange(10)x : :-1 # reversed xarray(9, 8, 7, 6, 5, 4, 3, 2, 1, 0)请注意,上述命令不会修改原始数组。重塑数组要重塑数组,我们可以使用reshape()。f = np.arange(101,113)f.reshape(3,4)f array(101, 102, 103, 104, 105, 106, 107, 108,
9、 109, 110, 111, 112)请注意,reshape()不会改变原始数组的形状。因此,要修改原始数组,我们可以使用resize( )f.resize(3,4)farray(101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112)如果在重塑中将某个维度指定为 -1,则只要给定维度是数组中元素总数的倍数,就会自动计算其他维度。f.reshape(3,-1)array(101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112)在上面的代码中,我们只指定了 3 行。Pyt
10、hon 自动计算其他维度的元素数量,即 4 列。缺失数据缺失的数据由 NaN(Not a Number 的缩写)表示。您可以使用命令np.nanval = np.array(15,10,np.in, 3, 2, 5, 6, 4)val.sum()Out: nan要忽略缺失值,可以使用np.nansum(val),它返回 45要检查数组是否包含缺失值,可以使用函数isnan( )np.isnan(val)2D 数组numpy 中的 2D 数组可以通过以下方式创建:g = np.array(10,20,30),(40,50,60)#或者g = np.array(10,20,30,40,50,60)
11、G维度、元素总数和形状可以分别通过ndim、size和shape确定:g.ndimg.sizeg.shapeg.ndimOutput: 2g.sizeOutput: 6g.shapeOutput: (2, 3)创建一些常用矩阵numpy 提供了创建一些常用于线性代数的常用矩阵的实用程序。要创建 2 行 4 列全零矩阵,我们可以使用np.zeros( ):np.zeros( (2,4) )array( 0., 0., 0., 0., 0., 0., 0., 0.)这里还可以指定 dtype。对于零矩阵,默认数据类型是“float”。要将其更改为整数,我们编写“dtype = np.int16”n
12、p.zeros(2,4,dtype=np.int16)array(0, 0, 0, 0, 0, 0, 0, 0, dtype=int16)为了获得从 0 到 1 的所有随机数的矩阵,我们编写np.empty。np.empty( (2,3) )array( 2.16443571e-312, 2.20687562e-312, 2.24931554e-312, 2.29175545e-312, 2.33419537e-312, 2.37663529e-312)注意:每次运行 np.empty 时结果可能会有所不同。为了创建统一矩阵,我们编写np.ones( )。我们可以通过以下方式创建一个全为 3
13、* 3 的矩阵:np.ones(3,3)array( 1., 1., 1., 1., 1., 1., 1., 1., 1.)要创建对角矩阵,我们可以编写np.diag( )。要创建对角线元素为 14、15、16 和 17 的对角矩阵,我们编写:np.diag(14,15,16,17)array(14, 0, 0, 0, 0, 15, 0, 0, 0, 0, 16, 0, 0, 0, 0, 17)要创建单位矩阵,我们可以使用np.eye( )。np.eye(5,dtype = int)array(1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
14、 0, 1, 0, 0, 0, 0, 0, 1)默认情况下,np.eye() 中的数据类型是“float”,因此我们编写 dtype = int 将其转换为整数。重塑 2D 数组要获得展平的 1D 数组,我们可以使用ravel( )g = np.array(10,20,30),(40,50,60)g.ravel()array(10, 20, 30, 40, 50, 60)要改变二维数组的形状,我们可以使用reshape。写入-1会自动计算另一个维度,并且不会修改原始数组。g.reshape(3,-1) # 返回形状修改后的数组# 它不会修改原始数组g.shape(2, 3)与一维数组类似,使用resize( )将修改原始数组中的形状。g.resize(3,2)g #resize修改原数组array(10, 20, 30, 40, 50, 60)