【问题标题】:Stumped on easy numpy problem - append 2D array to 3D array难倒简单的 numpy 问题 - 将 2D 数组附加到 3D 数组
【发布时间】:2020-08-05 15:35:24
【问题描述】:

我有一个尺寸为 (X, Y, 8) 的 3D 数组和一个尺寸为 (X, Y) 的 2D 数组。我知道有一个简单的解决方案,但似乎无法弄清楚如何将 2D 数组附加到 3D 数组,以使输出具有维度(X、Y、9)。我已经尝试过附加、连接、dstack、column_stack() 具有一百万种不同的变化(在我如何格式化输入数组、哪个轴等)并且不断收到错误“所有输入数组必须具有相同的维数" 或 "除连接轴外的所有输入数组维度必须完全匹配。"

我已经查看并关注了每个相关的 SO 问题。我似乎无法弄清楚这么简单的事情,这让我发疯了。帮忙?

【问题讨论】:

  • 听起来你是在随意尝试,不了解底层机制。你只能concatenate a (X,Y,1) 到你的 (X,Y,8)。忘记所有那些appendstack。将维度添加到 (X,Y),然后只需使用 np.concatenate。并认真对待这些错误消息!
  • 获得好答案的另一种方法是提供一个小示例,其中包含实际代码和错误消息(以及回溯)。然后我们可以准确指出你做错了什么!
  • 怎么样 np.concatenate((np.zeros([x,y,8]), np.ones([x,y]).reshape([x,y,1] )), 轴 = 2) ? (当然用你的数组替换 np.zeros 和 np.ones)
  • np.concatenate((arr3d, arr2d[..., np.newaxis]), axis=-1)

标签: python arrays numpy


【解决方案1】:

给定:

  • arr3d 形状 (z, y, x)
  • arr2d 形状 (z, y)

您可以通过以下方式将它们连接到形状为 (z, y, x + 1) 的数组中:

np.concatenate((arr3d, arr2d[..., np.newaxis]), axis=-1)

其中arr2d[..., np.newaxis] 的形状为(z, y, 1)

【讨论】:

  • 有效,np.append(arr3d, arr2d[..., np.newaxis], axis = 2) 也是如此。我只是觉得我以前能够做 np.append(arr3d, [arr2d], axis = 2) 并且对那不起作用感到沮丧。我不熟悉 [..., np.newaxis]。谢谢
猜你喜欢
  • 1970-01-01
  • 2020-03-13
  • 2012-12-09
  • 1970-01-01
  • 2021-10-12
  • 1970-01-01
  • 2016-04-07
  • 2021-10-28
相关资源
最近更新 更多