【问题标题】:NumPy - Expand and RepeatNumPy - 扩展和重复
【发布时间】:2020-02-26 16:54:59
【问题描述】:

有没有办法“扩展”一个数组并重复最后一个元素来填充扩展?

另一个post 谈到了0 的扩展和填充,但我希望重复最后一个值作为填充。

假设我有一个数组:

[[1, 2],
 [3, 4],
 [0, 0]]

我需要插入[5, 6, 6] 来替换[0, 0],显然NumPy 不允许这样做。但是我可以重塑/扩展为:

[[1, 2, 2],
 [3, 4, 4],
 [5, 6, 6]]

我正在阅读一个文件,其中值的数量可能在长度上有所不同,但我需要数组具有相同的形状。做到这一点的一种方法是首先读取文件并找到最大长度,然后再次读取它并填充,但文件是 10GB+,所以我更愿意通过“扩展”和重复回填来一次性完成。

【问题讨论】:

标签: python numpy


【解决方案1】:

看起来您需要的是使用edge 模式的numpy.pad。来自文档:

‘edge’
    Pads with the edge values of array.

示例代码:

>>> ar = np.array([[1,2], [4,5]])
>>> ar
array([[1, 2],
       [4, 5]])
>>> np.pad(ar, [(0, 0), (0, 4)], mode="edge")
array([[1, 2, 2, 2, 2, 2],
       [4, 5, 5, 5, 5, 5]])

第一个 (0, 0) 元组指定在第一个轴上没有填充,而第二个基本上是“在左侧添加 0 填充,在右侧添加 4”

【讨论】:

  • 完美。正是我想要的!
猜你喜欢
  • 2019-02-02
  • 2022-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-03
  • 2013-06-07
  • 2018-06-25
相关资源
最近更新 更多