背景
Numpy中的数组是多维数组,Numpy除了有很强的数组元素访问能力,还有很强的数组操作能力,以下是常用的Numpy数组操作函数:
一,修改数组形状
(一),numpy.reshape
numpy.reshape
函数可以在不改变数据的条件下修改形状,格式如下numpy.reshape(arr, newshape, order='C')
- arr:要修改形状的数组
- newshape:整数或者整数数组,新的形状应当兼容原有形状
- order:’C’ – 按行,’F’ – 按列,’A’ – 原顺序,’k’ – 元素在内存中的出现顺序。
实例
1 | import numpy as np |
二,翻转数组
(一),numpy.transpose
numpy.transpose(arr, axes)
- arr:要操作的数组
- axes:整数列表,对应维度,通常所有维度都会对换。
实例
1 | import numpy as np |
(二),numpy.ndarray.T
- 类似
numpy.transpose
:
实例
1 | import numpy as np |
三,连接数组
函数 | 描述 |
---|---|
concatenate | 连接沿现有轴的数组序列 |
stack | 沿着新的轴加入一系列数组。 |
hstack | 水平堆叠序列中的数组(列方向) |
vstack | 竖直堆叠序列中的数组(行方向) |
(一),numpy.concatenate
numpy.concatenate((a1, a2, ...), axis)
- a1, a2, …:相同类型的数组
- axis:沿着它连接数组的轴,默认为 0
实例
1 | import numpy as np |
(二),numpy.stack
numpy.stack(arrays, axis)
- arrays相同形状的数组序列
- axis:返回数组中的轴,输入数组沿着它来堆叠
实例
1 | import numpy as np |
(三),numpy.hstack
numpy.hstack
是numpy.stack
函数的变体,它通过水平堆叠来生成数组。
实例
1 | import numpy as np |
(四),numpy.vstack
numpy.vstack
是numpy.stack
函数的变体,它通过垂直堆叠来生成数组。
实例
1 | import numpy as np |
四,分割数组
函数 | 数组及操作 |
---|---|
split | 将一个数组分割为多个子数组 |
hsplit | 将一个数组水平分割为多个子数组(按列) |
vsplit | 将一个数组垂直分割为多个子数组(按行) |
(一),numpy.split
numpy.split(ary, indices_or_sections, axis)
- ary:被分割的数组
- indices_or_sections:若是一个整数,就用该数平均切分,若是一个数组,为沿轴切分的位置(左开右闭)
- axis:沿着哪个维度进行切向,默认为0,横向切分。为1时,纵向切分
实例
1 | import numpy as np |
(二),numpy.hsplit
numpy.hsplit
函数用于水平分割数组,通过指定要返回的相同形状的数组数量来拆分原数组。
实例
1 | import numpy as np |
(三),numpy.vsplit
numpy.vsplit
沿着垂直轴分割,其分割方式与hsplit用法相同。
实例
1 | import numpy as np |
五,数组元素的添加与删除
函数 | 元素及描述 |
---|---|
resize | 返回指定形状的新数组 |
append | 将值添加到数组末尾 |
insert | 沿指定轴将值插入到指定下标之前 |
delete | 删掉某个轴的子数组,并返回删除后的新数组 |
unique | 查找数组内的唯一元素 |
(一),numpy.resize
numpy.resize
函数返回指定大小的新数组。- 如果新数组大小大于原始大小,则包含原始数组中的元素的副本。
numpy.resize(arr, shape)
- arr:要修改大小的数组
- shape:返回数组的新形状
实例
1 | import numpy as np |
(二),numpy.append
numpy.append
函数在数组的末尾添加值。- 追加操作会分配整个数组,并把原来的数组复制到新数组中。
- 输入数组的维度必须匹配否则将生成ValueError。
numpy.append(arr, values, axis=None)
- arr:输入数组
- values:要向arr添加的值,需要和arr形状相同(除了要添加的轴)
- axis:默认为 None。当axis无定义时,是横向加成,返回总是为一维数组!
- 当axis有定义的时候,分别为0和1的时候(列数要相同)。当axis为1时,数组是加在右边(行数要相同)。
实例
1 | import numpy as np |
(三),numpy.insert
numpy.insert
函数在给定索引之前,沿给定轴在输入数组中插入值。- 如果值的类型转换为要插入,则它与输入数组不同。 插入没有原地的,函数会返回一个新数组。此外,如果未提供轴,则输入数组会被展开。
numpy.insert(arr, obj, values, axis)
- arr:输入数组
- obj:在其之前插入值的索引
- values:要插入的值
- axis:沿着它插入的轴,如果未提供,则输入数组会被展开
实例
1 | import numpy as np |
(四),numpy.delete
numpy.delete
函数返回从输入数组中删除指定子数组的新数组。- 与
insert()
函数的情况一样,如果未提供轴参数,则输入数组将展开。Numpy.delete(arr, obj, axis)
- arr:输入数组
- obj:可以被切片,整数或者整数数组,表明要从输入数组删除的子数组
- axis:沿着它删除给定子数组的轴,如果未提供,则输入数组会被展开
实例
1 | import numpy as np |
(五),numpy.unique
numpy.unique(arr, return_index, return_inverse, return_counts)
- arr:输入数组,如果不是一维数组则会展开
- return_index:如果为true,返回新列表元素在旧列表中的位置(下标),并以列表形式储
- return_inverse:如果为true,返回旧列表元素在新列表中的位置(下标),并以列表形式储
- return_counts:如果为true,返回去重数组中的元素在原数组中的出现次数
实例
1 | import numpy as np |