【问题标题】:How to unpack nested numpy.ndarray?如何解压嵌套的 numpy.ndarray?
【发布时间】:2020-06-26 07:56:49
【问题描述】:

假设我有一个 numpy 数组 e 构造如下:

import numpy as np
a = np.array([1,2])
b = np.array([3,4])
c = np.array([5,6])
d = np.array([7,8])
e = np.empty((2,2), dtype=object)

e[0,0] = a
e[0,1] = b
e[1,0] = c
e[1,1] = d

>>> e
array([[array([1, 2]), array([3, 4])],
   [array([5, 6]), array([7, 8])]], dtype=object)

我不知道如何解压数组e,使它变成:

array([[1, 2, 3, 4],
   [5, 6, 7, 8]])

感谢任何提示。

【问题讨论】:

  • 首先构建一个像e 这样的数组通常是一个错误。考虑更改产生e 的代码。
  • 你好。我认为您要做的是“展平”包含多个数组的数组。您可以使用 + 号来组合两个数组,或者查看有关展平嵌套数组的现有 stackoverflow 问题。
  • @c8999c3f964f64 添加两个 numpy 数组将尝试将它们广播到兼容的形状,并按元素添加它们。您不能使用 + 连接 numpy 数组。
  • 我在考虑 array([1, 2] + [3, 4]),你确定这在 numpy 中不起作用吗?对不起,假设不是这样!
  • @c8999c3f964f64 array([1,2] + [3,4]) 是对lists 而非numpy.ndarrays 的操纵。它的工作方式与 array([1,2]) + array([3,4]) 不同

标签: python arrays numpy nested numpy-ndarray


【解决方案1】:

使用numpy.block:

e = np.block([[a,b],[c,d]])
print(e)

输出:

array([[1, 2, 3, 4],
       [5, 6, 7, 8]])

【讨论】:

  • 这很好。看起来对我复杂的 vstack + hstack 方法很有用。
【解决方案2】:

你需要正确地堆叠你的数组:

import numpy as np
a = np.array([1,2])
b = np.array([3,4])
c = np.array([5,6])
d = np.array([7,8])
e = np.vstack((np.hstack((a, b)), np.hstack((c, d))))

【讨论】:

    猜你喜欢
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多