numpy.pad
с режимом constant
делает то, что вам нужно, где мы можем передать кортеж в качестве второго аргумента, чтобы указать, сколько нулей нужно заполнить для каждого размера, например, (2, 3)
добавит 2 нуля слева и < strong>3 нуля справа:
Дан A
как:
A = np.array([1,2,3,4,5])
np.pad(A, (2, 3), 'constant')
# array([0, 0, 1, 2, 3, 4, 5, 0, 0, 0])
Также возможно заполнить массивы 2D numpy, передав кортеж кортежей в качестве ширины заполнения, который принимает формат ((top, bottom), (left, right))
:
A = np.array([[1,2],[3,4]])
np.pad(A, ((1,2),(2,1)), 'constant')
#array([[0, 0, 0, 0, 0], # 1 zero padded to the top
# [0, 0, 1, 2, 0], # 2 zeros padded to the bottom
# [0, 0, 3, 4, 0], # 2 zeros padded to the left
# [0, 0, 0, 0, 0], # 1 zero padded to the right
# [0, 0, 0, 0, 0]])
В вашем случае вы указываете, что левая сторона равна нулю, а правая сторона вычисляется из модульного деления:
B = np.pad(A, (0, 1024 - len(A)%1024), 'constant')
B
# array([1, 2, 3, ..., 0, 0, 0])
len(B)
# 1024
Для большего A
:
A = np.ones(3000)
B = np.pad(A, (0, 1024 - len(A)%1024), 'constant')
B
# array([ 1., 1., 1., ..., 0., 0., 0.])
len(B)
# 3072
person
Psidom
schedule
04.07.2016