4

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

另一篇文章讨论了扩展和填充,0但我希望将最后一个值重复为填充。

假设我有一个数组:

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

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

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

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

4

1 回答 1

3

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

‘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”

于 2020-02-26T17:16:54.033 回答