【问题标题】:Rolling concatenation array of numpy arraysnumpy 数组的滚动串联数组
【发布时间】:2017-04-11 10:23:27
【问题描述】:

我想为数组的 numpy 数组实现滚动连接函数。例如,如果我的 numpy 数组如下:

 [[1.0]
  [1.5]
  [1.6]
  [1.8]
  ...
  ...
  [1.2]
  [1.3]
  [1.5]]

那么,对于 3 的窗口大小,我的函数应该返回:

 [[1.0]
  [1.0 1.5]
  [1.0 1.5 1.6]
  [1.5 1.6 1.8]
  ...
  ...
  [1.2 1.3 1.5]]

输入数组也可以包含不同形状的元素。例如,如果输入是:

[[1.0]
 [1.5]
 [1.6 1.7]
 [1.8]
 ...
 ...
 [1.2]
 [1.3]
 [1.5]]

那么输出应该是:

 [[1.0]
  [1.0 1.5]
  [1.0 1.5 1.6 1.7]
  [1.5 1.6 1.7 1.8]
  ...
  ...
  [1.2 1.3 1.5]]

【问题讨论】:

  • 输入看起来不像一个数组。
  • 已编辑问题
  • 如果您愿意用 NaNs/some-other-invalid-specifier 填充以保持 2D 形状的数组,请看这里 - stackoverflow.com/questions/40683601/…
  • 这不是一个真正的 numpy 问题,它看起来更像是一个列表连接。您开始和结束时的列表参差不齐,这意味着 numpy 中没有任何内容可以让您的生活更轻松。
  • @DanielForsman 所有这些单独的元素实际上都是 numpy 数组而不是列表。整体结构是一个数组数组

标签: python arrays numpy concatenation


【解决方案1】:

首先,将您的数组制作成一个列表。在numpy 中有一个数组是没有意义的。

l = arr.tolist()           #l is a list of arrays

现在使用列表解析来获取您的元素,并将它们与np.r_ 连接起来

l2 = [np.r_[tuple(l[max(i - n, 0):i])] for i in range(1, len(l)+1)]

【讨论】:

    猜你喜欢
    • 2021-04-17
    • 2019-01-06
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2022-01-25
    • 2019-01-31
    相关资源
    最近更新 更多