【问题标题】:Numpy.split with overlapping matrixes? [duplicate]Numpy.split 与重叠矩阵? [复制]
【发布时间】:2017-04-09 23:13:40
【问题描述】:

是否可以使用numpy.split 来拆分具有重叠部分的 numpy.ndarray。

例子:

给定一个形状为 (3,3) 的 numpy.ndarray,我想将其拆分为形状为 (1,1) 的 ndarray,由

numpy.split((3,3),(1,1)) = [(1,1),(1,1),(1,1)]

但是如果我想要形状为 (3,2) 的 numpy.ndarrays 怎么办,它是否能够生成一个长度为 2 且具有重叠 numpy.ndarrays 的列表?

这样:

enter image description here

【问题讨论】:

  • 在给定np.arange(9).reshape((3, 3)) 之类的输入的情况下,您能否指定您希望输出的样子? (另外:你为什么要这个?)我的第一个想法是np.lib.index_tricks.as_strided
  • @mdurant 我添加了一个带有图像的示例。我使用重叠作为在第一组和第二组之间生成平滑过渡的一种方式。附言。我还将想要的形状从(2,2)更正为(3,2)......可能会引起混乱......
  • 我已经标记了我自己的帖子。在其他地方找到了解决方案。

标签: python numpy split overlap


【解决方案1】:

我不确定您想看到什么,但这可能会回答您的问题:

有输入:

> arr = np.arange(9, dtype='int64').reshape((3, 3))

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


> np.lib.index_tricks.as_strided(arr, (2, 2, 2, 2), (24, 8, 24, 8), True)

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

有趣的是,这里没有数据副本。请注意,as_strided 的值仅适用于 8 字节值和 3x3 输入。您可以从输入的现有形状/步幅中获取它们。

【讨论】:

猜你喜欢
  • 2018-10-19
  • 2017-09-18
  • 2020-04-13
  • 1970-01-01
  • 2020-01-05
  • 1970-01-01
  • 1970-01-01
  • 2014-11-22
  • 1970-01-01
相关资源
最近更新 更多