Numpy基础20问

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Numpy基础20问相关的知识,希望对你有一定的参考价值。

参考技术A

一言以蔽之,numpy是python中基于数组对象的科学计算库。

提炼关键字,可以得出numpy以下三大特点:

因为numpy是一个python库,所以使用python包管理工具pip或者conda都可以安装。

安装python后,打开cmd命令行,输入:

即可完成安装。

n维数组(ndarray)对象,是一系列 同类数据 的集合,可以进行索引、切片、迭代操作。

numpy中可以使用 array 函数创建数组:

判断一个数组是几维,主要是看它有几个轴(axis)。

一个轴表示一维数组,两个轴表示二维数组,以此类推。

每个轴都代表一个一维数组。

比如说,二维数组第一个轴里的每个元素都是一个一维数组,也就是第二个轴。

一维数组一个轴:

二维数组两个轴:

三维数组三个轴:

以此类推n维数组。

numpy中常用 array 函数创建数组,传入列表或元组即可。

创建一维数组,并指定数组类型为 int :

创建二维数组:

还可以使用 arange 函数创建一维数字数组,用法类似python的 range 函数.

numpy的 random 模块用来创建随机数组。

random模块还有其他函数,这里不多说。

前面说到,数组维度即代表轴的数量。

我们可以通过数组(adarray)对象的ndim或shape属性,来查看轴的数量。

数组(ndarray)对象的 size 属性可以查看数组包含元素总数。

还可以通过 shape 属性返回元素的乘积,来计算数组元素数量。

Numpy支持的数据类型非常多,所以很适合做数值计算。
下面给出常见的数据类型:

数组(adarrry)对象提供 dtype 属性,用来查看数组类型。

前面说过,数组的 shape 属性返回一个元组,能够反映数组的形状,包括维度以及每个轴的元素数量。

那么如果给定一个数组,怎么改变其形状呢?

常用的方式有两种:

比如说我要将一个二维数组转换为三维数组。

reshape 方法可以传入整数或者元组形式的参数。

传入的参数和 shape 属性返回的元组的含义是一样的。

例如, x2.reshape(1,2,3) 是将二维数组转换成三维数组,参数个数代表要转换的维度,参数数字从左到右分别表示0轴、1轴、2轴的元素数量。

resize 方法和 reshape 方法使用形式一样,区别是 resize 方法改变了原始数组形状。

numpy一维数组的索引和切片操作类似python列表,这里不多讲。

比如说取一维数组前三个元素。

重点是对多维数组的索引和切片。

多维数组有多个轴,那么就需要对每个轴进行索引。

例如,三维数组形状为(x,y,z),分别代表:0轴有x个元素、1轴有y个元素,2轴有z个元素。

对0、1、2轴进行索引,如果取o轴第2个元素、1轴第0个元素、2轴第3个元素,那么索引形式就为[2,0,3]。

切片也是同样道理。

如果取o轴前2个元素、1轴前1个元素、2轴后2个元素,那么切片形式就为[:2,:1,-2:]。

说到迭代,大家很容易想到直接对数组直接使用 for 循环操作,对于一维数组来说,当然是可以的。

但对于多维数组,迭代是相对于0轴完成的,就是多维数组最外层的那一维。

你没有办法直接遍历数组里每一个元素,嵌套循环又太低效。

这个时候就需要用到 flat 方法,它可以将多维数组平铺为一维的迭代器。

数组(ndarray)对象提供了ravel方法,用来将多维数组展开为一维数组。

广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对多个数组的算术运算通常在相应的元素上进行。

较小的数组在较大的数组上“广播”,以便它们具有兼容的形状。

比如说一个一维数组乘以一个数字,相当于一维数组里每个元素都乘以这个数。

如果相同维度的数组进行运算,其shape相同,那么广播就是两个数组相同位数的元素进行运算。

如果两个数组维度不同,进行运算,这里就触发了广播的两个规则。

这两个规则保证了不同维度数组进行运算时,其维度自动调整成一致。

numpy提供了 transpose 函数用以对数组进行维度的调换,也就是转置操作。

转置后返回一个新数组。

当然,可以用更简单的方法。

数组对象提供了 T 方法,用于转置,同样会返回一个新数组。

numpy的 concatenate 函数用于沿指定轴连接相同形状的两个或多个数组。

numpy的 unique 函数用于去除数组中的重复元素,返回一个新数组。

unique 函数还能返回重复元素的索引、计数等信息,可去查文档自定义参数。

numpy文档

菜鸟教程

以上是关于Numpy基础20问的主要内容,如果未能解决你的问题,请参考以下文章

Numpy的学习2-基础运算1

python数据处理:NumPy基础

numpy基础代码操练

python--Numpy基础操作

机器学习笔记_1_Numpy

python模块 - numpy