加载中...

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))

数组的拼接

image-20250507141957824

函数 描述
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,hstackdstack函数分别对应于concatenate函数中的参数axis值为0,12的情形

【语法格式】

numpy.vstack([a1,a2,...])
numpy.hstack([a1,a2,...])
numpy.dstack([a1,a2,...])

【参数说明】

  • [a1,a2,...]:数组集合

【示例】vstack,hstackdstack函数的使用

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)

数组的转置

image-20250507150356971

线性代数中针对矩阵的操作,将行和列进行对调,即第一行变成第一列……或者将第一列变成第一行……的操作即为转置操作

函数 描述
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分隔

image-20250507152333998

【语法格式】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])

alt text

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

posted @ 2025-05-07 16:22  一只小小小飞猪  阅读(46)  评论(0)    收藏  举报