Python实现连续图片、多图片多维组合既数据增维和调整维度的案例一则

本文介绍了在深度学习和强化学习中如何处理输入数据的维度变换,包括使用Numpy的reshape和stack函数创建三维数组,以及append函数进行数组拼接,以构造连续的数据序列。示例代码详细展示了将二维图片转换为三维数组,并进行组合操作的过程,适用于理解数据预处理在深度学习模型中的重要性。
摘要由CSDN通过智能技术生成

我们在处理深度学习、深度强化学习输入数据时,经常需要调整数据维度,例如下图所示。
在这里插入图片描述
我们有a×b的二维图片(一般就是灰度图片)或数据,构造连续四张图为连续数据,也就是图中图1到图2的变换。

    # 沿着新轴连接数组/矩阵,增加一个维度,形成三维数组/矩阵/向量
    a3 = np.stack((a2,a2,a2,a2), axis=2) 

对应于Tensorflow的输入定义表示法为:

	n_features= (None, 50, 50, 4), # 输入“带前三张”灰度图像尺寸与维度

接着,我们要实现每次替换一张图片/一组数据,构造连续新四张图为连续数据,也就是图中图3的变换。

    # 合并两个三维,切片取三组
    f = np.append(b2,a3[:,:,:3],axis=2)

其中,通过Numpy的appand合并数组/矩阵,需要注意二者b2和a3的维度保持一致,而b1是二维图片,如何变换为三维呢:

    # 一维转变为三维
    b2 = b1.reshape(3,2,1)

最后,全部演示代码如下:

import numpy as np

if __name__ == '__main__':
    a = [0 , 1, 2, 3, 4, 5]
    #  取list最后的元素
    print(a[-1])
    b = [6, 7, 8, 9, 10, 11]
    # list转numpy数组
    a1 = np.array(a)
    print(a1)
    # 重新调整数据/矩阵为二维
    a2 = a1.reshape(3,2)
    print(a2)
    # 沿着新轴连接数组/矩阵,增加一个维度,形成三维数组/矩阵/向量
    a3 = np.stack((a2,a2,a2,a2), axis=2)     
    print(a3)
    print(a3.shape)
    
    b1 = np.array(b)
    # 一维转变为三维
    b2 = b1.reshape(3,2,1)
    print(b2)
    # 合并两个三维,切片取三组
    f = np.append(b2,a3[:,:,:3],axis=2)
    
    print(f)

输出效果如下:

5
[0 1 2 3 4 5]
[[0 1]
 [2 3]
 [4 5]]
[[[0 0 0 0]
  [1 1 1 1]]

 [[2 2 2 2]
  [3 3 3 3]]

 [[4 4 4 4]
  [5 5 5 5]]]
(3, 2, 4)
[[[ 6]
  [ 7]]

 [[ 8]
  [ 9]]

 [[10]
  [11]]]
[[[ 6  0  0  0]
  [ 7  1  1  1]]

 [[ 8  2  2  2]
  [ 9  3  3  3]]

 [[10  4  4  4]
  [11  5  5  5]]]

参考:
《强化学习之迷宫DQN(NIPS 2015版)实践笔记——入门提升篇》 CSDN博客 , 肖永威 ,2021.01

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肖永威

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值