numpy数组操作
一、修改数组形状
1.reshape()方法
原型:reshape(shape, order='C') 作用:不改变数据的条件下修改形状
参数 | 说明 |
---|
shape | 形状 | order | ‘C’ – 按行,‘F’ – 按列,‘A’ – 原顺序,‘k’ – 元素在内存中的出现顺序 |
2.flat数组元素迭代器
3.flatten()方法
原型:flatten(order='C') 作用:展平的数组元素并拷贝一份,顺序通常是"C风格"
注意:修改返回的数组不会对原数组产生影响
参数 | 说明 |
---|
order | ‘C’ – 按行,‘F’ – 按列,‘A’ – 原顺序,‘k’ – 元素在内存中的出现顺序 |
4.ravel()方法
原型:numpy.ravel(order='C') 作用:展平的数组元素,顺序通常是"C风格",返回的是数组视图(view,有点类似 C/C++引用reference的意味) 注意:修改会影响原始数组
二、翻转数组
1.transpose()方法
原型:numpy.transpose(a, axes=None) 作用:对换数组的维度 注意:修改会影响原始数组
参数 | 说明 |
---|
a | 要操作的数组 | axes | 整数列表,对应维度,通常所有维度都会对换 |
2.ndarray.T属性
类似 numpy.transpose
3.rollaxis()方法
原型:numpy.rollaxis(a, axis, start=0) 作用:向后滚动特定的轴到一个特定位置
参数 | 说明 |
---|
a | 要操作的数组 | axis | 要向后滚动的轴,其它轴的相对位置不会改变 | start | 默认为零,表示完整的滚动 会滚动到特定位置 |
4.swapaxes()方法
原型:numpy.swapaxes(a, axis1, axis2) 作用:交换数组的两个轴
参数 | 说明 |
---|
a | 要操作的数组 | axis1 | 对应第一个轴的整数 | axis2 | 对应第二个轴的整数 |
三、修改数组维度
1.bradcast()方法
用于模仿广播的对象,它返回一个对象,该对象封装了将一个数组广播到另一个数组的结果
2.broadcast_to()方法
原型:numpy.broadcast_to(array, shape, subok=False) 作用:将数组广播到新形状。它在原始数组上返回只读视图。 它通常不连续。 如果新形状不符合 NumPy 的广播规则,该函数可能会抛出ValueError
3.expand_dims()方法
原型:numpy.squeeze(arr, axis=None) 作用:通过在指定位置插入新的轴来扩展数组形状
4.squeeze()方法
原型:numpy.squeeze(arr, axis) 作用:从给定数组的形状中删除一维的条目
四、连接数组
1.concatenate()方法
原型:numpy.concatenate((a1, a2, ...), axis) 作用:用于沿指定轴连接相同形状的两个或多个数组
参数 | 说明 |
---|
a1, a2, … | 相同类型的数组 | axis | 沿着它连接数组的轴,默认为 0 |
2.stack()方法
原型:numpy.stack(arrays, axis) 作用:用于沿新轴连接数组序列
参数 | 说明 |
---|
arrays | 相同形状的数组序列 | axis | 数组中的轴,输入数组沿着它来堆叠 |
3.hstack()方法
是 numpy.stack 函数的变体,它通过水平堆叠来生成数组
4.vsatc()方法
是 numpy.stack 函数的变体,它通过垂直堆叠来生成数组
五、分割数组
1.split()方法
原型:numpy.split(ary, indices_or_sections, axis=0) 作用:函数沿特定的轴将数组分割为子数组
参数 | 说明 |
---|
ary | 被分割的数组 | indices_or_sections | 是一个整数,就用该数平均切分,如果是一个数组,为沿轴切分的位置(左开右闭) | axis | 沿着哪个维度进行切向,默认为0,横向切分。为1时,纵向切分 |
2.hsplit()方法
用于水平分割数组,通过指定要返回的相同形状的数组数量来拆分原数组
3.vsplit()方法
沿着垂直轴分割,其分割方式与hsplit用法相同
六、数组元素的添加与删除
1.resize()
原型:numpy.resize(arr, shape) 作用:返回指定大小的新数组
参数 | 说明 |
---|
arr | 要修改大小的数组 | shape | 返回数组的新形状 |
2.append()
原型:numpy.append(arr, values, axis=None) 作用:
- 在数组的末尾添加值
- 追加操作会分配整个数组,并把原来的数组复制到新数组中
- 输入数组的维度必须匹配否则将生成ValueError
参数 | 说明 |
---|
arr | 输入数组 | values | 要向arr添加的值,需要和arr形状相同(除了要添加的轴) | axis | 默认为 None。当axis无定义时,是横向加成,返回总是为一维数组!当axis有定义的时候,分别为0和1的时候。为0的时候(列数要相同)。当axis为1时,数组是加在右边(行数要相同) |
3.insert()
原型:numpy.insert(arr, obj, values, axis) 作用:在给定索引之前,沿给定轴在输入数组中插入值 注意:如果值的类型转换为要插入,则它与输入数组不同。 插入没有原地的,函数会返回一个新数组。 此外,如果未提供轴,则输入数组会被展开
参数 | 说明 |
---|
arr | 输入数组 | obj | 在其之前插入值的索引 | values | 要插入的值 | axis | 沿着它插入的轴,如果未提供,则输入数组会被展开 |
4.delete()
原型:numpy.delete(arr, obj, axis) 作用:返回从输入数组中删除指定子数组的新数组。 与 insert() 函数的情况一样,如果未提供轴参数,则输入数组将展开
参数 | 说明 |
---|
arr | 输入数组 | obj | 可以被切片,整数或者整数数组,表明要从输入数组删除的子数组 | axis | 沿着它删除给定子数组的轴,如果未提供,则输入数组会被展开 |
5.unique()
原型:numpy.unique(arr, return_index, return_inverse, return_counts) 作用:去除数组中的重复元素
参数 | 说明 |
---|
arr | 输入数组,如果不是一维数组则会展开 | return_index | 如果为true,返回新列表元素在旧列表中的位置(下标),并以列表形式储 | return_inverse | 如果为true,返回旧列表元素在新列表中的位置(下标),并以列表形式储 | return_counts | 如果为true,返回去重数组中的元素在原数组中的出现次数 |
|