1、什么是numpy?
一言以蔽之,numpy是python中基于数组对象的科学计算库。
提炼关键字,可以得出numpy以下三大特点:
- 拥有n维数组对象;
- 拥有广播功能(后面讲到);
- 拥有各种科学计算API,任你调用;
2、如何安装numpy?
因为numpy是一个python库,所以使用python包管理工具pip或者conda都可以安装。
安装python后,打开cmd命令行,输入:
pip install numpy
即可完成安装。
3、什么是n维数组对象?
n维数组(ndarray)对象,是一系列同类数据的集合,可以进行索引、切片、迭代操作。
numpy中可以使用array
函数创建数组:
import numpy
4、如何区分一维、二维、多维?
判断一个数组是几维,主要是看它有几个轴(axis)。
一个轴表示一维数组,两个轴表示二维数组,以此类推。
每个轴都代表一个一维数组。
比如说,二维数组第一个轴里的每个元素都是一个一维数组,也就是第二个轴。
一维数组一个轴:
[1,2,3]
二维数组两个轴:
[[0, 1, 2],
[3, 4, 5]]
三维数组三个轴:
[[[ 0, 1, 2],
[ 3, 4, 5]],
[[ 6, 7, 8],
[ 9, 10, 11]]]
以此类推n维数组。
5、如何创建n维数组?
numpy中常用array
函数创建数组,传入列表或元组即可。
创建一维数组,并指定数组类型为int
:
import numpy
创建二维数组:
import numpy
还可以使用arange
函数创建一维数字数组,用法类似python的range
函数.
import numpy
6、如何创建随机数组?
numpy的random
模块用来创建随机数组。
random.rand
函数,生成[0,1)均匀分布的随机数组
import numpy
random.randn
函数,生成数值成标准正态分布(平均值为0,标准差为1)的数组
import numpy
random.randint
函数,生成可以指定范围的随机整数数组
import numpy
random.normal
函数,生成数值成正态分布(可指定平均值、标准差)的数组
import numpy
random模块还有其他函数,这里不多说。
7、如何查看数组的维度?
前面说到,数组维度即代表轴的数量。
我们可以通过数组(ndarray)对象的ndim或shape属性,来查看轴的数量。
- ndim属性直接返回维度值;
- shape属性返回一个元组,元组的长度即代表维度值,里面的数字从左往右分别代表每一轴的元素数量。
import numpy
8、如何查看数组有多少个元素?
数组(ndarray)对象的size
属性可以查看数组包含元素总数。
import numpy
还可以通过shape
属性返回元素的乘积,来计算数组元素数量。
import numpy
9、Numpy数组支持哪些数据类型?
Numpy支持的数据类型非常多,所以很适合做数值计算。下面给出常见的数据类型:
10、如何查看数组的类型?
数组(ndarrry)对象提供dtype
属性,用来查看数组类型。
import numpy
11、如何改变数组的形状?
前面说过,数组的shape
属性返回一个元组,能够反映数组的形状,包括维度以及每个轴的元素数量。
那么如果给定一个数组,怎么改变其形状呢?
常用的方式有两种:
reshape
方法,它返回一个新的数组,而不能改变原始数组。resize
方法,无返回值,它更改了原始数组。
比如说我要将一个二维数组转换为三维数组。
import numpy
reshape
方法可以传入整数或者元组形式的参数。
传入的参数和shape
属性返回的元组的含义是一样的。
例如, x2.reshape(1,2,3)
是将二维数组转换成三维数组,参数个数代表要转换的维度,参数数字从左到右分别表示0轴、1轴、2轴的元素数量。
resize
方法和reshape
方法使用形式一样,区别是resize
方法改变了原始数组形状。
import numpy
12、如何对数组进行索引和切片操作?
numpy一维数组的索引和切片操作类似python列表,这里不多讲。
比如说取一维数组前三个元素。
import numpy
重点是对多维数组的索引和切片。
多维数组有多个轴,那么就需要对每个轴进行索引。
例如,三维数组形状为(x,y,z),分别代表:0轴有x个元素、1轴有y个元素,2轴有z个元素。
对0、1、2轴进行索引,如果取o轴第2个元素、1轴第0个元素、2轴第3个元素,那么索引形式就为[2,0,3]。
import numpy
切片也是同样道理。
如果取o轴前2个元素、1轴前1个元素、2轴后2个元素,那么切片形式就为[:2,:1,-2:]。
import numpy
13、如何对数组里每个元素进行迭代?
说到迭代,大家很容易想到直接对数组直接使用for
循环操作,对于一维数组来说,当然是可以的。
import numpy
但对于多维数组,迭代是相对于0轴完成的,就是多维数组最外层的那一维。
你没有办法直接遍历数组里每一个元素,嵌套循环又太低效。
这个时候就需要用到flat
方法,它可以将多维数组平铺为一维的迭代器。
import numpy
14、如何将多维数组展开为一维数组?
数组(ndarray)对象提供了ravel方法,用来将多维数组展开为一维数组。
import numpy
15、什么广播机制?
广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对多个数组的算术运算通常在相应的元素上进行。
较小的数组在较大的数组上“广播”,以便它们具有兼容的形状。
比如说一个一维数组乘以一个数字,相当于一维数组里每个元素都乘以这个数。
import numpy
如果相同维度的数组进行运算,其shape相同,那么广播就是两个数组相同位数的元素进行运算。
import numpy
如果两个数组维度不同,进行运算,这里就触发了广播的两个规则。
- 让所有输入数组都向其中形状最长的数组看齐,形状中不足的部分都通过在前面加 1 补齐;
- 当输入数组的某个维度的长度为 1 时,沿着此维度运算时都用此维度上的第一组值。
这两个规则保证了不同维度数组进行运算时,其维度自动调整成一致。
import numpy
16、numpy中如何进行数值舍入操作?
around
函数,用于四舍五入,返回一个新数组
import numpy
floor
函数,用于向下取整,返回一个新数组
import numpy
ceil
函数,用于向上取整,返回一个新数组
import numpy
17、如何对数组进行转置操作?
numpy提供了transpose
函数用以对数组进行维度的调换,也就是转置操作。
转置后返回一个新数组。
import numpy
当然,可以用更简单的方法。
数组对象提供了T
方法,用于转置,同样会返回一个新数组。
import numpy
18、如何连接两个相同维度的数组?
numpy的concatenate
函数用于沿指定轴连接相同形状的两个或多个数组。
import numpy
19、如何向数组添加值?
- numpy的
append
函数向数组末尾追加值,可以指定不同的轴。
import numpy
- numpy的
insert
函数可以沿给定轴,在数组中任意位置插入数据。
import numpy
20、如何对数组进行去重操作?
numpy的unique
函数用于去除数组中的重复元素,返回一个新数组。
import numpy
unique
函数还能返回重复元素的索引、计数等信息,可去查文档自定义参数。
未完待续!
参考资料
[1]numpy文档: https://www.numpy.org.cn/
[2]菜鸟教程: https://www.runoob.com/numpy/numpy-tutorial.html
-END-
往期精彩超简单!基于Python搭建个人“云盘”
又一可视化神器pyecharts登场
推荐一些能提高生产力的 Python 库
Excel VS Python 谁更适合数据分析?
硬核!30 张图解 HTTP 常见的面试题
10个省时间的 PyCharm 技巧
python每日更换“必应图片”为“桌面壁纸”
教你使用Python下载全网视频!
END
关注【程序IT圈】,更多的Python好文输出