我想将我所有的数组填充为一定的恒定形状。
所有数组的大小都为(X,13),但我希望它们的大小为(99,13)。 X小于或等于99。有些数组小于99。我正在寻找一种将其填充为默认var
大小的方法。
我已经看过并尝试过一些示例,这些示例可以动态检查填充,但我找不到正确的代码。
for item in data:
if len(item) < len(var):
np.pad(len(var) - len(item)
答案 0 :(得分:0)
这里:
import numpy as np
arr = np.random.randint(0, 10, (7, 4))
def padding(array, xx, yy):
"""
:param array: numpy array
:param xx: desired height
:param yy: desirex width
:return: padded array
"""
h = array.shape[0]
w = array.shape[1]
a = (xx - h) // 2
aa = xx - a - h
b = (yy - w) // 2
bb = yy - b - w
return np.pad(array, pad_width=((a, aa), (b, bb)), mode='constant')
print(padding(arr, 99, 13).shape) # just proving that it outputs the right shape
Out[83]: (99, 13)
一个示例:
padding(arr, 7, 11) # originally 7x4
Out[85]:
array([[0, 0, 0, 4, 8, 8, 8, 0, 0, 0, 0],
[0, 0, 0, 5, 9, 6, 3, 0, 0, 0, 0],
[0, 0, 0, 4, 7, 6, 1, 0, 0, 0, 0],
[0, 0, 0, 5, 6, 5, 7, 0, 0, 0, 0],
[0, 0, 0, 6, 6, 3, 3, 0, 0, 0, 0],
[0, 0, 0, 6, 0, 9, 6, 0, 0, 0, 0],
[0, 0, 0, 9, 4, 4, 0, 0, 0, 0, 0]])