在Python中使用Numpy填充
取一个三维数组。如下面的示例所示,从结束位置填充实例。也就是说,我需要填充沿数组边缘值镜像的话语反射 数组a:在Python中使用Numpy填充,numpy,padding,Numpy,Padding,取一个三维数组。如下面的示例所示,从结束位置填充实例。也就是说,我需要填充沿数组边缘值镜像的话语反射 数组a: array ([array([[3, 1, 4, 1], [5, 9, 2, 6], [5, 3, 5, 8]]), array([[9, 7, 9, 3], [2, 3, 8, 4]]), array([[6, 2, 6, 4], [3, 3, 8, 3], [2, 7, 9, 5], [0, 2, 8, 8]])], dtype=ob
array ([array([[3, 1, 4, 1],
[5, 9, 2, 6],
[5, 3, 5, 8]]),
array([[9, 7, 9, 3],
[2, 3, 8, 4]]),
array([[6, 2, 6, 4],
[3, 3, 8, 3],
[2, 7, 9, 5],
[0, 2, 8, 8]])], dtype=object)
dim1 = a.shape[0] # n
dim2 = max([i.shape[0] for i in a]) # m
dim3 = a[0].shape[1] # k
填充后最终矩阵的尺寸:
结果=np.零((dim1、dim2、dim3))
输出:
[[[3. 1. 4. 1.]
[5. 9. 2. 6.]
[5. 3. 5. 8.]
[5. 3. 5. 8.]]
[[9. 7. 9. 3.]
[2. 3. 8. 4.]
[2. 3. 8. 4.]
[9. 7. 9. 3.]]
[[6. 2. 6. 4.]
[3. 3. 8. 3.]
[2. 7. 9. 5.]
[0. 2. 8. 8.]]]
如何使用numpy.pad获得输出?诀窍是使用
pad\u width
参数,在每个维度上填充特定数量的行。在这种情况下,pad\u width
应具有形状(2,2)
for b in a:
extra_lines = dim2 - b.shape[0]
c = np.pad(b, pad_width=[[0, extra_lines], [0, 0]], mode='symmetric')
print(c, '\n')
[[3 1 4 1]
[5 9 2 6]
[5 3 5 8]
[5 3 5 8]]
[[9 7 9 3]
[2 3 8 4]
[2 3 8 4]
[9 7 9 3]]
[[6 2 6 4]
[3 3 8 3]
[2 7 9 5]
[0 2 8 8]]