IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> vstack和hstack以及concatenate处理三维图片 -> 正文阅读

[人工智能]vstack和hstack以及concatenate处理三维图片

先写总结:采用 concatenate可以实现vstack和 hstack的效果。

1.填坑背景:

存在 hstack 和 vstack认知误差, 对人脸补全案例中的图片切割以及合并存在补全失误的情况。

在用机器学习做人脸预测的时候,我们要放入的是二维数组,训练的时候的表格都是二维的。但是我们拿到的face数据是这样的

2. 完整代码

import pandas as pd
import numpy as np 
import matplotlib.pyplot as plt
np.arange( 1,7 )
array([1, 2, 3, 4, 5, 6])
arr = np.array( [
        [ 1, 2, 3, 4, 5, 6] ,  

        [ 11, 22, 33, 44, 55, 66] ,  

        [ 111, 222, 333, 444, 555, 666] ,  

        [ 1111, 2222, 3333, 4444, 5555, 6666] ,  

        [ 11111, 22222, 33333, 44444, 55555, 66666] , 

        [ 111111, 222222, 333333, 444444, 555555, 666666] ,  
    ]
        )
arr
array([[     1,      2,      3,      4,      5,      6],
       [    11,     22,     33,     44,     55,     66],
       [   111,    222,    333,    444,    555,    666],
       [  1111,   2222,   3333,   4444,   5555,   6666],
       [ 11111,  22222,  33333,  44444,  55555,  66666],
       [111111, 222222, 333333, 444444, 555555, 666666]])
arr.shape
(6, 6)
arr03 = arr[:,0:3]
arr03
array([[     1,      2,      3],
       [    11,     22,     33],
       [   111,    222,    333],
       [  1111,   2222,   3333],
       [ 11111,  22222,  33333],
       [111111, 222222, 333333]])
arr04 = arr[:,3:6]
arr04
array([[     4,      5,      6],
       [    44,     55,     66],
       [   444,    555,    666],
       [  4444,   5555,   6666],
       [ 44444,  55555,  66666],
       [444444, 555555, 666666]])

水平拼接

np.hstack( (arr03, arr04 ))
array([[     1,      2,      3,      4,      5,      6],
       [    11,     22,     33,     44,     55,     66],
       [   111,    222,    333,    444,    555,    666],
       [  1111,   2222,   3333,   4444,   5555,   6666],
       [ 11111,  22222,  33333,  44444,  55555,  66666],
       [111111, 222222, 333333, 444444, 555555, 666666]])

垂直拼接

np.vstack( (arr03, arr04) )
array([[     1,      2,      3],
       [    11,     22,     33],
       [   111,    222,    333],
       [  1111,   2222,   3333],
       [ 11111,  22222,  33333],
       [111111, 222222, 333333],
       [     4,      5,      6],
       [    44,     55,     66],
       [   444,    555,    666],
       [  4444,   5555,   6666],
       [ 44444,  55555,  66666],
       [444444, 555555, 666666]])
# vstack 表示垂直拼接,属于1, hstack 属于水平拼接,表示0
np.concatenate(  ( arr03, arr04 ) , axis = 0 )
array([[     1,      2,      3],
       [    11,     22,     33],
       [   111,    222,    333],
       [  1111,   2222,   3333],
       [ 11111,  22222,  33333],
       [111111, 222222, 333333],
       [     4,      5,      6],
       [    44,     55,     66],
       [   444,    555,    666],
       [  4444,   5555,   6666],
       [ 44444,  55555,  66666],
       [444444, 555555, 666666]])
np.concatenate(  ( arr03, arr04 ) , axis = 1 ) 
array([[     1,      2,      3,      4,      5,      6],
       [    11,     22,     33,     44,     55,     66],
       [   111,    222,    333,    444,    555,    666],
       [  1111,   2222,   3333,   4444,   5555,   6666],
       [ 11111,  22222,  33333,  44444,  55555,  66666],
       [111111, 222222, 333333, 444444, 555555, 666666]])

2.1 高维数组拼接

用于图像处理

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

        [ 11, 22, 33, 44, 55, 66] ,  

        [ 111, 222, 333, 444, 555, 666] ,  

        [ 1111, 2222, 3333, 4444, 5555, 6666] ,  

        [ 11111, 22222, 33333, 44444, 55555, 66666] , 

        [ 111111, 222222, 333333, 444444, 555555, 666666] ,  
    ]]
        )
brr
array([[[     1,      2,      3,      4,      5,      6],
        [    11,     22,     33,     44,     55,     66],
        [   111,    222,    333,    444,    555,    666],
        [  1111,   2222,   3333,   4444,   5555,   6666],
        [ 11111,  22222,  33333,  44444,  55555,  66666],
        [111111, 222222, 333333, 444444, 555555, 666666]]])

2.2 取出所有的带 1,2,3 的数

brr13 = brr[:,:, :3] 
brr13
array([[[     1,      2,      3],
        [    11,     22,     33],
        [   111,    222,    333],
        [  1111,   2222,   3333],
        [ 11111,  22222,  33333],
        [111111, 222222, 333333]]])
brr46 = brr[:,:,3:6]
brr46
array([[[     4,      5,      6],
        [    44,     55,     66],
        [   444,    555,    666],
        [  4444,   5555,   6666],
        [ 44444,  55555,  66666],
        [444444, 555555, 666666]]])

2.3 还原成原数组

# 还原失败
np.hstack( ( brr13, brr46 ) )
array([[[     1,      2,      3],
        [    11,     22,     33],
        [   111,    222,    333],
        [  1111,   2222,   3333],
        [ 11111,  22222,  33333],
        [111111, 222222, 333333],
        [     4,      5,      6],
        [    44,     55,     66],
        [   444,    555,    666],
        [  4444,   5555,   6666],
        [ 44444,  55555,  66666],
        [444444, 555555, 666666]]])
np.vstack( ( brr13, brr46 ) )
array([[[     1,      2,      3],
        [    11,     22,     33],
        [   111,    222,    333],
        [  1111,   2222,   3333],
        [ 11111,  22222,  33333],
        [111111, 222222, 333333]],

       [[     4,      5,      6],
        [    44,     55,     66],
        [   444,    555,    666],
        [  4444,   5555,   6666],
        [ 44444,  55555,  66666],
        [444444, 555555, 666666]]])

2.4 高纬度拼接只能用concatenate 或者配合 reshape来用

np.concatenate(  ( brr13, brr46 ) , axis = 2 ) # 
array([[[     1,      2,      3,      4,      5,      6],
        [    11,     22,     33,     44,     55,     66],
        [   111,    222,    333,    444,    555,    666],
        [  1111,   2222,   3333,   4444,   5555,   6666],
        [ 11111,  22222,  33333,  44444,  55555,  66666],
        [111111, 222222, 333333, 444444, 555555, 666666]]])

本案例中,brr的数据共分成 0, 1, 2 三个维度, 其中数据存储全部存储到 2维度中,

用到哪个维度的数据拼接就将 axis的维度写上

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-08 13:35:32  更:2021-08-08 13:35:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 22:23:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码