NumPy - 展开并重复

pst*_*tix 5 python numpy

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

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

假设我有一个数组:

[[1, 2],
 [3, 4],
 [0, 0]]
Run Code Online (Sandbox Code Playgroud)

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

[[1, 2, 2],
 [3, 4, 4],
 [5, 6, 6]]
Run Code Online (Sandbox Code Playgroud)

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

Cal*_*Cal 4

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

\n\n
\xe2\x80\x98edge\xe2\x80\x99\n    Pads with the edge values of array.\n
Run Code Online (Sandbox Code Playgroud)\n\n

示例代码:

\n\n
>>> ar = np.array([[1,2], [4,5]])\n>>> ar\narray([[1, 2],\n       [4, 5]])\n>>> np.pad(ar, [(0, 0), (0, 4)], mode="edge")\narray([[1, 2, 2, 2, 2, 2],\n       [4, 5, 5, 5, 5, 5]])\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n