numpy.pad
z trybem constant
robi to, co trzeba, gdzie możemy przekazać krotki jako drugi argument, aby powiedzieć, ile zer pad na każdej wielkości, o (2, 3)
na przykład będzie pad zer po lewej stronie i zerami z prawej strony:
Biorąc A
jak:
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])
możliwe jest również, aby pad tablicach 2D numPy przekazując krotka krotek jak szerokość dopełnienia, które tak es format ((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]])
Dla Państwa przypadku należy podać lewą stroną do zera i prawy pad boczny obliczona z modułowego podziału:
B = np.pad(A, (0, 1024 - len(A)%1024), 'constant')
B
# array([1, 2, 3, ..., 0, 0, 0])
len(B)
# 1024
dla większych 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
Dzięki! Czy to działa, jeśli oryginalna długość wynosi 3000? (wtedy długość wyściełana powinna wynosić 3072). – Basj
Powinno, ponieważ prawidłowa długość dopełnienia jest tutaj różnicą pomiędzy '1024' a modularną resztą' len (A) 'podzieloną przez' 1024'. Powinno być łatwe do przetestowania. – Psidom