【问题标题】:How to flatten a numpy array of dtype object如何展平 dtype 对象的 numpy 数组
【发布时间】:2020-09-21 16:15:37
【问题描述】:

我正在使用不同长度的 ndarray 切片,我希望我的结果是平坦的。 例如:

a = np.array(((np.array((1,2)), np.array((1,2,3))), (np.array((1,2)), np.array((1,2,3,4,5,6,7,8)))))

是否有任何直接的方法通过使用 numpy 功能(无循环)使这个数组变平?

【问题讨论】:

  • 在这个例子中,你期望的结果是什么?
  • 使用 dtype object 的 NumPy 数组无助于加快速度。它们类似于 Python 列表,并且仅在您需要与 NumPy 数组公开相同接口的东西时才有用。您使用这种奇怪的数据结构的目的是什么?
  • 我有随机间隔的信号标签。切片返回我这种类型(因为切片具有不同的长度)。

标签: python numpy


【解决方案1】:

你可以尝试flattening它,然后使用hstack,它将数组按顺序水平堆叠。

>>> a = np.array(((np.array((1,2)), np.array((1,2,3))), (np.array((1,2)), np.array((1,2,3,4,5,6,7,8)))))
>>> np.hstack(a.flatten())
array([1, 2, 1, 2, 3, 1, 2, 1, 2, 3, 4, 5, 6, 7, 8])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    • 2015-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2019-11-26
    相关资源
    最近更新 更多