Python数据分析——Numpy2 数组操作

1.修改数组形状

reshape函数
函数reshape 在不改变数据的条件下修改形状,其格式如下。
numpy.reshape(arr, newshape, order='C') # 全局函数
array.reshape(newshape,order='C') # 成员函数
其函数参数如表所示。
import numpy as np
a = np.arange(12)
print("a=\n",a)
b = np.reshape(a,(2,6),order='C') 
print("b=\n",b)
c = a.reshape((1,3,4),order='F') 
print("c=\n",c)
d = a.reshape((2,3,2),order='F')
print("d=\n",d)

a=
 [ 0  1  2  3  4  5  6  7  8  9 10 11]
b=
 [[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]]
c=
 [[[ 0  3  6  9]
  [ 1  4  7 10]
  [ 2  5  8 11]]]
d=
 [[[ 0  6]
  [ 2  8]
  [ 4 10]]

 [[ 1  7]
  [ 3  9]
  [ 5 11]]]

2、flatten函数
将高维度数组展平,返回一个一维的数组,其格式如下:
array. flatten(order='C')
a = np.arange(12).reshape(3,4)
print("a=\n",a)
b = a.flatten()
print("b=\n",b)
c = a.flatten(order='F')
print("c=\n",c)
d = a.flat[::] # 数组的flat属性
print("d=\n",d)

a=
 [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
b=
 [ 0  1  2  3  4  5  6  7  8  9 10 11]
c=
 [ 0  4  8  1  5  9  2  6 10  3  7 11]
d=
 [ 0  1  2  3  4  5  6  7  8  9 10 11]
 

3、ravel函数
函数ravel 展平数组元素,返回的是数组视图,其函数格式如下所示:
numpy.ravel(a, order='C')
array.ravel(order='C')
与flatten()的不同:
1)使用ravel()创建的新数组实际上是对父数组的引用(即“视图”)。这意味着对新数组的任何更改也将影响父数组。因为ravel不创建拷贝,所以它的内存效率很高。
2)ravel函数有成员函数和全局函数两种形式,flatten只有成员函数形式。

2.翻转数组

transpose 对换数组的维度
swapaxes 对换数组的两个轴
1、numpy.transpose函数
交换数组的维度索引值(轴序号),格式如下所示:
numpy.transpose(arr, axes)
narray.transpose(axes)
参数说明如下所示:
arr:要操作的数组。
axes:整数序列,对应维度 序号 。若是2维,则可省略该参数,直接
交换行列,即转置。
2、numpy.swapaxes函数
numpy.swapaxes函数用于交换数组的 两个轴 ,格式如下所示:
numpy.swapaxes(arr, axis1, axis2)
narray.swapaxes(axis1, axis2)
swapaxes实际上也是针对轴索引进行变化,区别就在于transpose可以一次传入多个参数,对若干轴进行交换,而swapaxes只能两两置换,且swapaxes(i,j)和
swapaxes(j,i)没有区别。

 


3、连接数组

 

1、numpy.concatenate
numpy.concatenate函数用于 沿指定轴 连接 形状兼容、维度相同 的两个或多
个数组,格式如下所示。
numpy.concatenate((a1, a2, ...), axis=0)
参数:
(a1, a2, ...):形状兼容的数组组成的元组。
axis:沿着它连接数组的轴序号,默认为 0。
2、numpy.hstack
在水平方向上堆叠 两个或多个 形状兼容的数组形成新的数组。
机器学习数据集准备过程中,可以用于将数据列与标签列在水平方向上合并,从而得到带标签的数据集。
3、numpy.vstack
在垂直方向上堆叠两个或多个形状兼容的数组形成新的数组。
机器学习数据集准备过程中,可以用于将标题行以及从多个数据文件中加载的数
据行在垂直方向上合并,从而将所有数据集整合为一个数据集。

4、分割数组

1、 numpy.split
numpy.split函数沿特定的轴将数组分割为 子数组 ,返回值增加一维:
numpy.split(array, indices_or_sections, axis)
参数array:被分割的数组。
indices_or_sections:如果是一个整数,就用该数平均切分,如果是一个数组,
为沿轴切分的位置。
axis:沿着哪个维度进行切分, 默认为0
2、numpy.hsplit
numpy.hsplit函数用于 水平均分数组 ,不能均分则出错。
numpy.hsplit(array, indices_or_sections)
3、numpy.vsplit
numpy.vsplit沿着 垂直 均分数组 ,不能均分则出错。
numpy.hsplit(array, indices_or_sections)

 


数组元素添加与删除 

1、numpy.resize
按照shape的形状 拓展 arr, 不够的 依次按原数组单个元素排列顺序补全,返回指
定大小的新数组。
numpy.resize(arr, shape) # 全局函数,返回新形状数组,不修改原数组arr
arr.resize(shape) # 成员函数,原地修改arr形状,返回值为None
arr:要修改大小的数组。
shape:新形状(数组或序列)。
注意:
numpy.resize可以多退少补数据,array.reshape必须和原数组数据量一样

 

2、numpy.append
numpy.append函数在数组的末尾添加值, 输入数组的形状必须与原数组匹配
否则出错。
append 格式: numpy.append(arr, values, axis=None)
arr:输入数组。
values:要向arr添加的值, 需要和arr形状 (除了要添加的轴)和 维度相同
axis:默认为 None。
axis为None时,是横向加成,返回一维数组。
axis为0时,数据是加在下边(列数要相同);
axis为1时,数组是加在右边(行数要相同)。
3、numpy.insert
numpy.insert函数在给定索引之前,沿给定轴在输入数组中插入值。
numpy.insert(arr, index, values, axis=None)
arr:输入数组。
index:在其之前插入值的索引,可以是序列数据(如元组、列表),实现在
多个索引之前插入数据。
values:要插入的数据,可以是序列数据,但其形状必须与原数组匹配。
axis:沿着它插入的轴, 如果未提供,则输入数组会被展开。

 

5、numpy.delete
numpy.delete函数返回从输入数组中删除指定子数组的新数组。 与insert()函
数的情况一样, 如果未提供轴参数,则输入数组将展开
numpy.delete(arr, obj, axis)
arr:输入数组。
obj:可取值为 slice(前闭后开)、 int 、int类型的array、int类型的序列等,
指示要沿指定轴删除的子数组的 索引
axis未指定:arr会先按行展开,然后按照obj删除,返回一个行矩阵。
axis = 0:按行删除
axis = 1:按列删除

 


 6、索引和切片

ndarray对象的内容可以通过索引或切片来访问和修改. ndarray数组可以基于0 - n-1的下标进行索引
·两种切片方式:①通过内置的slice(start, stop, step)函数;②通过冒号分隔切片参数start:stop:step

 

 

 

花式索引(Fancy indexing)是指利用 数组、列表、元组等可迭代类型 进行索引。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值