Mar*_*rkD 0 python arrays numpy vectorization
我需要使用第一行和最后一行/列作为填充数据,在所有4个边上有效地填充numpy数组.例如,给出以下内容:
A=np.array([[1 2 3 4],
[5 6 7 8],
[9 10 11 12]])
Run Code Online (Sandbox Code Playgroud)
我想结束:
B=np.array([[1 1 2 3 4 4],
[1 1 2 3 4 4],
[5 5 6 7 8 8],
[9 9 10 11 12 12],
[9 9 10 11 12 12]])
Run Code Online (Sandbox Code Playgroud)
注意原始数组A位于:B [1:-1,1:-1].我假设我可以首先在一个方向(水平或垂直)填充,以获得重复的角点值.但是,我的矢量化/ numpification让我失望了.(注意:我正在使用的数组非常大,我需要多次执行此选项,因此有效地执行它是关键 - 我可以使用循环来完成它,但它很慢).
使用np.pad,您可以指定填充的宽度和要应用于数组的填充模式.对于示例数组,edge填充模式提供了所需的结果:
>>> np.pad(A, 1, 'edge')
array([[ 1, 1, 2, 3, 4, 4],
[ 1, 1, 2, 3, 4, 4],
[ 5, 5, 6, 7, 8, 8],
[ 9, 9, 10, 11, 12, 12],
[ 9, 9, 10, 11, 12, 12]])
Run Code Online (Sandbox Code Playgroud)