Python 将 3d 数组重塑为 2d

2024-03-07

我想将 numpy 数组重塑为所描绘的形状,从 3D 变为 2D。不幸的是,顺序不正确。

假设有一个 numpy 数组 (1024, 64, 100) 并希望将其转换为 (1024*100, 64)。

有人知道如何维持秩序吗?

我有一个样本数据

data[0,0,0]=1
data[0,1,0]=2
data[0,2,0]=3
data[0,3,0]=4
data[1,0,0]=5
data[1,1,0]=6
data[1,2,0]=7
data[1,3,0]=8
data[2,0,0]=9
data[2,1,0]=10
data[2,2,0]=11
data[2,3,0]=12
data[0,0,1]=20
data[0,1,1]=21
data[0,2,1]=22
data[0,3,1]=23
data[1,0,1]=24
data[1,1,1]=25
data[1,2,1]=26
data[1,3,1]=27
data[2,0,1]=28
data[2,1,1]=29
data[2,2,1]=30
data[2,3,1]=31

我希望得到这样的结果:

array([[  1.,   2.,   3.,   4.],
       [  5.,   6.,   7.,   8.],
       [  9.,  10.,  11.,  12.],
       [ 20.,  21.,  22.,  23.],
       [ 24.,  25.,  26.,  27.],
       [ 28.,  29.,  30.,  31.]])

此外,我还想以另一种方式进行重塑,即:

array([[  1.,   2.,   3.,   4.],
       [  5.,   6.,   7.,   8.],
       [  9.,  10.,  11.,  12.],
       [ 20.,  21.,  22.,  23.],
       [ 24.,  25.,  26.,  27.],
       [ 28.,  29.,  30.,  31.]])

到所需的输出:

 [[[  1.  20.]
  [  2.  21.]
  [  3.  22.]
  [  4.  23.]]

 [[  5.  24.]
  [  6.  25.]
  [  7.  26.]
  [  8.  27.]]

 [[  9.  28.]
  [ 10.  29.]
  [ 11.  30.]
  [ 12.  31.]]]

看起来你可以使用numpy.transpose http://docs.scipy.org/doc/numpy/reference/generated/numpy.transpose.html然后重塑,就像这样 -

data.transpose(2,0,1).reshape(-1,data.shape[1])

样本运行 -

In [63]: data
Out[63]: 
array([[[  1.,  20.],
        [  2.,  21.],
        [  3.,  22.],
        [  4.,  23.]],

       [[  5.,  24.],
        [  6.,  25.],
        [  7.,  26.],
        [  8.,  27.]],

       [[  9.,  28.],
        [ 10.,  29.],
        [ 11.,  30.],
        [ 12.,  31.]]])

In [64]: data.shape
Out[64]: (3, 4, 2)

In [65]: data.transpose(2,0,1).reshape(-1,data.shape[1])
Out[65]: 
array([[  1.,   2.,   3.,   4.],
       [  5.,   6.,   7.,   8.],
       [  9.,  10.,  11.,  12.],
       [ 20.,  21.,  22.,  23.],
       [ 24.,  25.,  26.,  27.],
       [ 28.,  29.,  30.,  31.]])

In [66]: data.transpose(2,0,1).reshape(-1,data.shape[1]).shape
Out[66]: (6, 4)

要取回原始 3D 数组,请使用reshape进而numpy.transpose,就像这样——

In [70]: data2D.reshape(np.roll(data.shape,1)).transpose(1,2,0)
Out[70]: 
array([[[  1.,  20.],
        [  2.,  21.],
        [  3.,  22.],
        [  4.,  23.]],

       [[  5.,  24.],
        [  6.,  25.],
        [  7.,  26.],
        [  8.,  27.]],

       [[  9.,  28.],
        [ 10.,  29.],
        [ 11.,  30.],
        [ 12.,  31.]]])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 将 3d 数组重塑为 2d 的相关文章

随机推荐

  • 角度材料 2 个选项卡滚动显示在导航上

    正如您在此示例中所看到的 当您更改选项卡时 动画上会出现垂直滚动条
  • 如何在 Android 中打开 PDF

    如何从服务器打开 pdf 文件而不将其保存在设备上且不使用任何第三方应用程序 因为我不希望我的用户下载任何应用程序来使用我的应用程序 而且我不想使用 Web 视图来打开 pdf文件 此方法适用于旧版本的android 在新活动中 WebVi
  • 使用 DataTable.js 的 js 源数据的单独列搜索过滤器,过滤器位于顶部

    我无法将过滤器选择放在顶部 我如何实现 我坚持使用 initComplete 选项 因为它仅在 DataTable 完全初始化后触发一次 并且可以安全地调用 API 方法 另外 我到底应该在哪里使列下拉值变得唯一 const dataSet
  • i18next加载json错误(404 Not Found)

    这是我在index html 的代码 p p
  • 将整数列表转换为逗号分隔的字符串

    我试图将整数列表转换为逗号分隔的整数字符串 Collectors joining CharSequence delimiter 返回一个按遇到顺序连接输入元素 由指定分隔符分隔 的收集器 List
  • AsyncTask 上的 Android 连接超时

    尝试让这个简单的下载和保存图像正常工作 但我不断收到连接超时异常 据我所知 该网址应该有效 new DownloadImageTask private class DownloadImageTask extends AsyncTask
  • 2 个 JUnit Assert 类之间的差异

    JUnit 框架包含 2Assert类 显然在不同的包中 和每个类的方法看起来非常相似 有人能解释这是为什么吗 我指的课程是 junit framework Assert http junit org junit javadoc 4 5 j
  • 跨 AppDomains 和进程的 TransactionScope

    跨不同的AppDomains和进程使用System Transactions 主要是TransactionScope 是真的吗 相关交易 http msdn microsoft com en us library system transa
  • 如何在 VB.NET 中使用 BeginInvoke

    在 C 中你使用BeginInvoke像这样 obj BeginInvoke Action gt do something 我尝试将其转换为 VB NET 最后得到了这段代码 看起来可行 obj BeginInvoke Sub do som
  • ASP.NET MVC 快速教程 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Pygame:如何让我的图像下降?

    我试图让物体像在地球上一样下落 我已经让它们到了我想要的地方 但我似乎无法为它们设置动画 这就是我想要落下的物体 import pygame class circle def init self screen planet color 25
  • 在 android 5 上膨胀类 android.webkit.WebView 时出错

    我在 Android 5 0 API 21 上进行测试时出现以下错误 在其他操作系统版本上测试效果良好 java lang RuntimeException 无法启动活动 ComponentInfo ui activities naviga
  • 如何在 VSCode 中复制代码行的 URL?

    当我使用 VSCode 工作并且需要将代码行 URL 从存储库发送给同事时 这种情况经常发生 VSCode 对此没有本机支持 如果您使用 Bitbucket 则 Atlassian 插件会启用一项功能 然而 我一直在寻找更通用的选择 我使用
  • 菜单被裁剪

    我有一个MFC项目 它支持 40 多种语言 我的电脑上有两个显示器 它们都是不同尺寸的显示器和不同的分辨率 如果我将应用程序移至较小的显示器上 则不会显示完整的语言菜单 我知道它会显示滚动条 为什么不是呢 我的菜单是标准菜单 没有什么花哨
  • “java.lang.ClassFormatError: Invalid pc in LineNumberTable”的可能原因

    今天我开始编写一个使用 sqlite 的项目 当我尝试测试它时 我收到了java lang ClassFormatError LineNumberTable 中的 pc 无效 希望你能帮助我 因为我迷路了 我搜索了这个错误 并发现了一些针对
  • GWT 列表框多选

    我需要添加一个列表框 组合框 允许用户选择多个值 我知道 GWT API 中已经有一个可用的ListBox http google web toolkit googlecode com svn javadoc 1 5 com google
  • 使用 Doctrine 和 Symfony2 查询多对多关系

    我试图理解 Doctrine 和 Symfony2 中的多对多关系是如何运作的 我重新创建了官方文档 goo gl GYcVE0 中显示的示例 并且我有两个实体类 User and Group正如你在下面看到的
  • 错误 0x80005000 和 DirectoryServices

    我正在尝试使用 Net 中的目录服务运行简单的 LDAP 查询 DirectoryEntry directoryEntry new DirectoryEntry LDAP someserver contoso com DC contoso
  • 为什么 Xcode 7 显示 *.tbd 而不是 *.dylib?

    Xcode 7 在目标 gt 构建阶段 gt 链接二进制文件与库 gt 点击 按钮 选择要添加的框架时 您找不到 dylib 而是看到 tbd 这是什么原因呢 需要dylib的人 从这里开始post https stackoverflow
  • Python 将 3d 数组重塑为 2d

    我想将 numpy 数组重塑为所描绘的形状 从 3D 变为 2D 不幸的是 顺序不正确 假设有一个 numpy 数组 1024 64 100 并希望将其转换为 1024 100 64 有人知道如何维持秩序吗 我有一个样本数据 data 0