将数组填充到特定大小

时间:2019-12-09 00:43:00

标签: python numpy

我想将我所有的数组填充为一定的恒定形状。

所有数组的大小都为(X,13),但我希望它们的大小为(99,13)。 X小于或等于99。有些数组小于99。我正在寻找一种将其填充为默认var大小的方法。

我已经看过并尝试过一些示例,这些示例可以动态检查填充,但我找不到正确的代码。

for item in data:
    if len(item) < len(var):
        np.pad(len(var) - len(item)

1 个答案:

答案 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]])