03numpy_数组拼接_转置_分割
改变数组维度
- 通过
reshape方法可以将一维数组变成二维、三维或者多维数组,也可以通过reshape方法将多维数组变成一维 (经常使用到的) - 通过
ravel方法或者flatten方法可以将多维数组变成一维数组 - 改变数组为度还可以直接设置数组的
shape属性(元组类型) - 通过
resize方法也可以改变数组的维度
【示例】改变数组的维度
import numpy as np
a = np.arange(1,13)
# 一维数组 ==> 二维数组
aa=a.reshape(4,3)
# 一维数组 ==> 三维数组
aaa=a.reshape(2,3,2)
# 二维数组 ==> 一维数组
aa.reshape(12)
# 不知道原始数组元素个数时,参数传递-1
aa.reshape(-1)
# 多维数组转一维数组 ravel() 或者 flatten()
aa.ravel()
aa.flatten()
# 修改元组a的维度的其他方法
a.shape = (6,2)
a.resize((12))
数组的拼接

| 函数 | 描述 |
|---|---|
concatenate() |
沿指定轴连接相同形状的两个或多个数组 |
vstack() |
竖直(x轴)堆叠序列中的数组(行方向) |
hstack() |
水平(y轴)堆叠序列中的数组(列方向) |
dstack() |
沿着z轴方向堆叠序列中的数组 |
concatenate函数的语法格式如下
numpy.concatenate([a1,a2,...],axis)
【参数说明】
[a1,a2,...]:相同类型的数组axis:沿着它连接数组的轴,默认为0
【示例】concatenate函数使用
import numpy as np
x = np.arange(1,13).reshape(4,3)
y = np.arange(8,20).reshape(4,3)
# shape (8,3)
print(np.concatenate([x,y]))
# shape (4,6)
print(np.concatenate([x,y],axis=1))
vstack,hstack和dstack函数分别对应于concatenate函数中的参数axis值为0,1和2的情形
【语法格式】
numpy.vstack([a1,a2,...])
numpy.hstack([a1,a2,...])
numpy.dstack([a1,a2,...])
【参数说明】
[a1,a2,...]:数组集合
【示例】vstack,hstack和dstack函数的使用
import numpy as np
# 二维数组
x = np.arange(1,13).reshape(4,3)
y = np.arange(8,20).reshape(4,3)
# shape (4,6) 水平堆叠
print(np.hstack([x,y]))
# shape (8,3) 垂直堆叠
print(np.vstack([x,y]))
# 三维数组
x = np.arange(1,13).reshape(2,3,2)
y = np.arange(8,20).reshape(2,3,2)
# shape (4,3,2) 沿x轴方向堆叠
print(np.vstack([x,y]).shape)
# shape (2, 6, 2) 沿y轴方向堆叠
print(np.hstack([x,y]).shape)
# shape (2,3,4) 沿z方向堆叠
print(np.dstack([x,y]).shape)
数组的转置

线性代数中针对矩阵的操作,将行和列进行对调,即第一行变成第一列……或者将第一列变成第一行……的操作即为转置操作
| 函数 | 描述 |
|---|---|
transpose() |
仅针对二维数组的转置操作 |
.T |
仅针对二维数组的转置操作 |
np.transpose() |
多维数组的转置操作 |
【语法格式】
np.transpose(array1,=None)
【参数说明】
array1:需要转置的元组axes: 所在维度索引值的序列
【示例】数组的转置
import numpy as np
# 二维数组
array1 = np.arange(1,13).reshape(3,4)
# 方式 1
array2 = array1.transpose()
# 方式 2
array3 = array1.T
# 方式 3
array4 = np.transpose(array1,(1,0))
# 多维数组 例如 shape (3,6,2)
x1 = np.arange(1,37).reshape(3,6,2)
# 要求转化为 shape (2,6,3)
x2 = np.transpose(x1,(2,1,0))
数组的分隔 - split分隔

【语法格式】numpy.split函数沿特定的轴将数组分割为子数组,格式如下:
numpy.split(ary,indices_or_sections, axis)
【参数说明】
ary:被分割的数组indices_or_sections:如果是一个整数,就用该数平均切分,如果是一个数组,为沿轴切分的位置(左开右闭)axis:沿着哪个维度进行切分,默认为0,横向切分。为1时,纵向切分
【示例】数组的分隔
import numpy as np
# 一维数组分割
a = np.arange(1,9)
# 如果传入整数,必须能够平分
np.split(a,2)
np.split(a,[3,5])
# 二维数组分割
aa = np.arange(1,37).reshape(6,6)
# 等价方式
np.split(aa,3)
np.vsplit(aa,3)
np.split(aa,[2,5])
np.vsplit(aa,[2,5])
np.split(aa,[3,5],axis=1)
np.hsplit(aa,[3,5])

注意,分割后的结果以列表的形式呈现

浙公网安备 33010602011771号