Python|Numpy数组基础知识
2018-11-27 本文已影响2人
5a41eb2ceec6
关于Numpy基本的数组操作有:
- 数组的属性
数组的大小、形状、储存大小、数据类型 - 数组的索引
获取和设置数组各个元素的值 - 数组的切分
在大的数组中获取或设置更小的子数组 - 数组的变形
改变给定数组的形状 - 数组的拼接和分裂
将多个数组合并为一个,以及将一个数组分裂成多个
- 数组的属性
- nidm(数组的维度)
- shape(数组每个维度的大小)
- size(数组的总大小)
- dtype(数组的数据类型)
- itemsize(每个数组元素字节大小)
- nbytes(数组总字节大小)
一般地可以认为 nbytes 与 itemsize 和 size 的乘积大小相等
- 数组索引
- 可以通过中括号制定索引获取第i个值(从0开始计数)
- 为了获取数组的末尾值,可以用负值索引
-
在多维数组中,可以用逗号分隔的索引元组获取元素
索引
特别注意:NumPy 数组是固定类型的,将一个浮点值插入一个整型数组时,浮点值会被截短成整型。并且这种截短是自动完成的,不会给任何提示或警告
注意- 数组切片
切片符号用冒号(:)表示,其语法方式:
x[start:stop:step]
如果以上3个参数都未指定,则会被分别设置默认值start=0,stop=维度的大小,step=1
- 3.1一维子数组
其中,步长设置为负值是一种非常方便的获取逆序数组的方式。
-
3.2 多维子数组
3.2 -
3.3 获取数组的行和列
平时一种常见的需求是获取数组的单行和单列,可以将索引与切片组合起来实现。
- 3.4 非副本视图的子数组
关于数组切片有一点很重要也非常有用,即数组切片返回的是数组数据的视图,而不是数值数据的副本。
这种处理方式很有用,这表明在处理非常大的数据集时,可以获取或处理这些数据集的片段,而不用复制底层的数据缓存。
-
3.5 创建数组的副本
数组视图有一些非常好的特性,但是在有些时候明确地复制数组里的数据或子数组也是非常有用的。此时用copy()方法就可以~
3.5
- 数组的变形
数组变形最灵活的实现方式是通过 reshape() 函数来实现。但要注意原始数组的大小必须和变形后数组的大小一致。此外还可以在一个切片操作中利用 newaxis 关键字来实现。
-
数组拼接和分裂
数组的拼接主要由 np.concatenate、 np.vstack 和 np.hstack实现
拼接1
数组的分裂主要由 np.split、 np.hsplit 和 np.vsplit 函数来实现
分裂
需要注意的是,N 分裂点会得到 N + 1 个子数组