reshape(shape) : 不改变数组元素,返回一个shape形状的数组,原数组不变。是对每行元素进行处理

resize(shape) : 与.reshape()功能一致,但修改原数组 In [1]: a = np.arange(20)

#原数组不变

In [2]: a.reshape([4,5])

Out[2]:

array([[ 0, 1, 2, 3, 4],

[ 5, 6, 7, 8, 9],

[10, 11, 12, 13, 14],

[15, 16, 17, 18, 19]])

In [3]: a

Out[3]:

array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,

17, 18, 19])

#修改原数组

In [4]: a.resize([4,5])

In [5]: a

Out[5]:

array([[ 0, 1, 2, 3, 4],

[ 5, 6, 7, 8, 9],

[10, 11, 12, 13, 14],

[15, 16, 17, 18, 19]])

.swapaxes(ax1,ax2) : 将数组n个维度中两个维度进行调换,不改变原数组 In [6]: a.swapaxes(1,0)

Out[6]:

array([[ 0, 5, 10, 15],

[ 1, 6, 11, 16],

[ 2, 7, 12, 17],

[ 3, 8, 13, 18],

[ 4, 9, 14, 19]])

.flatten() : 对数组进行降维,返回折叠后的一维数组,原数组不变 In [7]: a.flatten()

Out[7]:

array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,

17, 18, 19])

将多个二维数组合并为一个三维数组

方法一:

对于两个(或者多个)同一维度的矩阵,直接利用np.array()重新构造一个array,这样可以变相起到扩展维数的作用。例如: import numpy as np

a = np.array([[1,2,3],[4,5,6]])

b = np.array([[2,2,3],[4,5,6]])

c = np.array([[3,2,3],[4,5,6]])

print('矩阵a:\n',a)

print('维数:',a.shape)

com = np.array([a,b,c])

print('合并矩阵:\n',com)

print('维数:',com.shape)

输出结果为:

矩阵a:

[[1 2 3]

[4 5 6]]

维数: (2, 3)

合并矩阵:

[[[1 2 3]

[4 5 6]]

[[2 2 3]

[4 5 6]]

[[3 2 3]

[4 5 6]]]

维数: (3, 2, 3)

方法二:

但是,如果两个array,使用方法一时会出现如下结果: import numpy as np

aa = np.array([[[1,2,3],[4,5,6]],[[2,2,3],[4,5,6]],[[3,2,3],[4,5,6]]])

a = np.array([[4,2,3],[4,5,6]])

com = np.array([aa,a])

print('合并矩阵:\n',com)

print('维数:',com.shape)

输出结果:

合并矩阵:

[array([[[1, 2, 3],

[4, 5, 6]],

[[2, 2, 3],

[4, 5, 6]],

[[3, 2, 3],

[4, 5, 6]]])

array([[4, 2, 3],

[4, 5, 6]])]

维数: (2,)

可以看到:输出的维数不对,以上方法就不适用了。

那么,我们就需要利用np.append和array.reshape()函数对数组进行拼接之后重组,具体实现如下: import numpy as np

aa = np.array([[[1,2,3],[4,5,6]],[[2,2,3],[4,5,6]],[[3,2,3],[4,5,6]]])

a = np.array([[4,2,3],[4,5,6]])

data = np.append(aa,a)#先拼接成一个行向量

print(data)

dim = aa.shape#获取原矩阵的维数

print('原矩阵维数:',dim)

data1 = data.reshape(dim[0]+1,dim[1],dim[2])#再通过原矩阵的维数重新组合

print('合并矩阵:\n',data1)

print('维数:',data1.shape)

现在来看一下用reshape将二维数据升为三维后的数据分布情况: import numpy as np

b = np.arange(36).reshape((6,6))

b1 = b.reshape(2,3,6)

b的元素:

b1的元素:

可以看到,原来6*6的矩阵被分为了2个3*6的矩阵。每一行的数据分布并没有改变,只是将前3行划为一个维度,然后将后三行划为另一个维度。 b1.reshape(6,6)

如果用这条命令,则数据又被还原了回去,与b的一样。 b1.reshape(3,12)

如果用的是reshape(3,12),则相当于将数据首先拉伸为1维的,然后再将一维数据重组为3*12

方法三:

相比于前两种方法,这种方法可谓“曲线救国”之典范,具体思路是:先转化成list,拼接后再转化回去。

这是因为list中的append()函数可以在添加函数的时候不改变原来list的维度。虽然没有对这种方法进行一个速度测试,但直觉来看时间复杂度挺高的,建议慎用。 aa = np.array([[[1,2,3],[4,5,6]],[[2,2,3],[4,5,6]],[[3,2,3],[4,5,6]]])

a = np.array([[4,2,3],[4,5,6]])

#将array转换成list

aa = aa.tolist(aa)

a = a.list(a)

aa.append(a)#注意与方法二中np.append()用法的区别

com = np.array(aa)

print(com.shape)

输出结果:

合并矩阵:

[[[1 2 3]

[4 5 6]]

[[2 2 3]

[4 5 6]]

[[3 2 3]

[4 5 6]]

[[4 2 3]

[4, 5, 6]]]

维数: (4,2,3)

这里注意:

两种类型的相互转换函数:

array转list:a = a.tolist()

list转array:a =np.array(a)

以上这篇Python reshape的用法及多个二维数组合并为三维数组的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持聚米学院。

python三维变量合并_Python reshape的用法及多个二维数组合并为三维数组的实例相关推荐

  1. python二维数组变成三维数组_Python reshape的用法及多个二维数组合并为三维数组的实例...

    reshape(shape) : 不改变数组元素,返回一个shape形状的数组,原数组不变.是对每行元素进行处理 resize(shape) : 与.reshape()功能一致,但修改原数组 In [ ...

  2. Python数据集可视化:抽取数据集的两个特征进行二维可视化、主成分分析PCA对数据集降维进行三维可视化(更好地理解维度之间的相互作用)

    Python数据集可视化:抽取数据集的两个特征进行二维可视化.主成分分析PCA对数据集降维进行三维可视化(更好地理解维度之间的相互作用) 目录 Python数据集可视化:抽取数据集的两个特征进行二维可 ...

  3. ICLR 2021|基于GAN的二维图像无监督三维形状重建

    2D GAN知道3D形状吗?基于GAN的二维图像无监督三维形状重建 论文.代码地址:在公众号「计算机视觉工坊」,后台回复「二维图像GAN」,即可直接下载. 摘要: 自然图像是三维物体在二维图像平面上的 ...

  4. Java中二维数组的用法(不定长二维数组)

    Java中二维数组的用法(不定长二维数组),即每个第二维的数组长度不一样. 1>代码如下: package com.demo.test;public class Test {public Tes ...

  5. 【GDAL基础教程】多张二维tif数据转三维tif数据

    [GDAL基础教程]多张二维tif数据转三维tif数据 今天分享一下多张二维单波段tif数据合并为一张三维多波段tif数据的脚本,话不多说,详见代码. 原数据 # -*- encoding: utf- ...

  6. MATLAB编程(4)——MATLAB绘制二维高斯函数的三维图

    本篇博文记录使用MATLAB绘制二维高斯函数的三维图. 用到的MATLAB函数--mesh()(绘制三维线框图)和surf()(绘制三维表面图). MATLAB命令窗口输入>> doc 函 ...

  7. 实现微信小程序和支付宝小程序二维码合并

    实现微信小程序和支付宝小程序二维码合并,这样用户就可以通过同一个二维码进入微信或者支付宝啦 1.需要准备可以通过公网访问的服务器 2.微信小程序 打开微信小程序后台->开发(左边)->开发 ...

  8. 基于二维切片图序列的三维立体建模MATLAB仿真

    目录 1.算法概述 2.仿真效果预览 3.核心MATLAB程序 4.完整MATLAB程序 1.算法概述 isosurface 等值面函数 调用格式: fv = isosurface(X,Y,Z,V,i ...

  9. 如何将CAD二维图纸切换成三维视图呢?

    如何将CAD二维图纸切换成三维视图呢?当我们想要在CAD中绘制三维图形,可绘制出来的确是二维图纸该怎么办呢?如何才能将二维图纸切换成三维图纸呢?下面来教你具体操作方法. 1.进入任意浏览器搜索下载迅捷 ...

最新文章

  1. pytorch python 交并比 iou
  2. oracle+挂载dbf,dbf导入oracle工具下载|OracleToDbf(dbf导入oracle工具) v1.2官方版 附教程_星星软件园...
  3. C++ delete与 delete []区别
  4. 省常中模拟 Test3 Day2
  5. 前端学习(2715):重读vue电商网站35之在sessionStorage保存左侧菜单栏的激活状态
  6. Java IO流总结
  7. 逗比学树莓派之GPIO
  8. 初识PHP变量函数语法
  9. python socket发送16进制数据_python socket以16进制的数据进行传递与解析
  10. PHP地图规划骑行路径,骑行路线规划-路线规划-开发指南-iOS 导航SDK | 高德地图API...
  11. Oracle根底数据标准存储名目浅析(三)——日期标准(三)
  12. 给Windows机器创建软连接
  13. TextView的属性
  14. rufus-3.2制作linux/Windows启动盘,附rufus.exe软件程序下载链接
  15. 职高学计算机可以考的大学名单,职高可以考的大学有哪些
  16. bios显示计算机故障,笔记本电脑BIOS出现故障怎么办 常见BIOS故障解决方案
  17. 网络职业成长规划经验谈
  18. mogodb 基础与副本集(详细)
  19. Volo - Rust gRPC 框架入门
  20. 2018_9_22 模拟赛

热门文章

  1. html渲染引擎开发,数据可视化初探-从零开始开发一个渲染引擎概述
  2. js扩展运算符的使用
  3. Java 防沉迷软件
  4. 如何在windows系统自带命令查看硬件信息
  5. Mac上 关闭下载时自动解压缩功能(图)
  6. c语言添加miracl库,密码学C语言函数库——Miracl库快速上手中文指南(VC)
  7. 如何用AE做出App store中的卡片动态效果
  8. 想要删除视频中不需要的片头片尾怎么操作
  9. 登陆企业邮箱后怎么设置自动回复?
  10. QQ浏览器兼容模式下Cookie失效 导致的NetCore Cookie认证失效