当前位置: 首页 > 科技观察

吴思南机器学习之路:Numpy中多维数组的创建

时间:2023-03-14 17:59:34 科技观察

Numpy是Python科学计算的核心库之一,主要对多维数组提供强大的支持。什么是多维数组?核心对象是一个相同类型的多维数组(简单理解就是一个表格,通常内容是一些数字),数据类型相同。概念:1.轴(axes):数组的维度统称为轴。2.rank:轴的个数称为rank。示例:一维数组[1,2,1]是秩为1的数组,因为它只有一个轴(一维)。下图显示了秩为2(二维)的数组。它的第一个轴(维度)的长度为2,如红色线框所示;第二个轴(维度)的长度为3,如蓝色线框所示。这有点像数据结构中说的:数组的元素本身也可以是数组类型,还可以进一步扩展。Numpy中的多维数组:ndarrayNumpy的数组类numpy.array一般称为ndarray,主要是为了区别于Python的数组类array.array。在后面的文章中,如无特殊说明,array和ndarray均指代numpy.array。ndarray(numpy.array)的主要属性:ndim:数组的轴(维)数shape:python的元组类型,其中每个数字代表数组在每个轴(维)上的长度size:allin多维数组元素总数(等于shape元组中所有值的乘积)dtype:多维数组中元素的类型。同一多维数组中的所有元素都属于同一类型。这里插一句:Anaconda是一个基于Python的数据科学平台,相当于一个封装了常用的数据分析类库和工具的软件。是我们入门学习的好帮手。下载地址:https://www.continuum.io/anaconda-overview。安装后,打开“IPython”,或“JupyterQtConsole”,或“Spyder”。它们本质上是IPython交互环境的包装器。练习:创建一个ndarray。直接使用numpy.array()方法,参数为python的list或tuple(序列类型)。在下面的代码中,“In”是我们输入的代码,“Out”是上一行代码的输出。并不是每一行代码都会有输出。代码:下图是在“Spyder”中执行上述代码的效果图:双击上图中变量查看窗口(Variableexplorer)中的ndarray,可以看到一个二维的显示图array:创建一些ndarray其他方法1.zeros,ones和empty方法numpy.zerosnumpy.onesnumpy.emptynumpy提供了另一种快速创建ndarray的方法,特别适用于数组内容未知的情况,也避免了数组增长过程中的开销2.arange方法arange可以返回一个均匀分布的ndarray(numpy.array)。开始(可选)、结束(必填)和间距(可选)可以分别设置。下面的例子非常清楚地演示了这种方法的使用。3、reshape方法顾名思义,这个方法就是将一个已有的ndarray转换成另一个shape(shape,即数组各轴上的长度)的多维数组。新数组包含所有原始数据。注意:新形状必须保持相同的大小。说白了,第一个形状的参数,3x4=12,需要和第二个形状的参数,2x6=12保持一致。4.random方法用随机数填充新数组的内容。numpy中有多种生成数据数组的方法,容易混淆。目前看到的随机数有两种,一种是按照“均匀分布”产生的(比如概率论中的“0-1连续分布”),另一种是按照“正态分布”产生的。在numpy中,我们将看到方法random、ranf和sample。其实都是:numpy.random.random_sample方法的别名,它根据“均匀分布”生成随机数。下面的代码验证了这一点:详细介绍中用的最多的一个:numpy.random.randomAPI:http://t.im/1b9sw它在半开区间[0.0,1.0),随机返回一个浮点数,并且只有一个方法参数:size:int或int类型的元组,也用作返回数组的形状。如果输入是(2,3,5),先抽取2x3x5=30个随机数,然后组成一个形状为(2,3,5)的多维数组作为返回值。如果不提供参数,则直接返回一个随机数。练习:生成一个区间为[12,30)的6x3数组代码:好了,关于numpy的第一讲到此结束,后面还有很多东西要介绍。【本文为专栏作家“吴思南”原创稿件,转载请联系作者获得授权】点此阅读更多该作者好文