numpy.pad
mit constant
Modus tut, was Sie brauchen, wo wir ein Tupel als zweites Argument übergeben kann zu sagen, wie viele Nullen aufzufüllen auf jeder Größe, eine (2, 3)
zum Beispiel wird Pad Nullen auf der linken Seite und Nullen auf der rechten Seite:
Gegeben A
als:
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])
Es ist auch möglich, ein 2D-Pad numpy Arrays durch ein Tupel von Tupeln als Polsterbreite vorbei, die tak es das Format der ((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]])
Für Ihren Fall legen Sie die linke Seite Null und rechte Seitenpolster aus einer modularen Division berechnet:
B = np.pad(A, (0, 1024 - len(A)%1024), 'constant')
B
# array([1, 2, 3, ..., 0, 0, 0])
len(B)
# 1024
Für einen größeren 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
Dank! Funktioniert es, wenn die ursprüngliche Länge 3000 ist? (Dann soll gepolsterte Länge 3072 sein) – Basj
Es sollte, da die richtige Länge padding hier ist der Unterschied zwischen '1024' und dem modularen Rest' Len (A) durch '' 1024' geteilt. Es sollte einfach zu testen sein. – Psidom