numpy.pad
với chế độ constant
làm những gì bạn cần, nơi chúng ta có thể vượt qua một tuple như là đối số thứ hai để biết bao nhiêu số không để pad trên mỗi kích thước, một (2, 3)
ví dụ sẽ pad số không ở phía bên trái và số không ở bên phải:
với A
như:
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])
Nó cũng có thể pad mảng 2D numPy bằng cách thông qua một tuple của các bộ như chiều rộng đệm, mà tak es định dạng của ((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]])
Đối với trường hợp của bạn, bạn chỉ định ở phía bên trái là zero và ngay bên pad tính từ một bộ phận mô-đun:
B = np.pad(A, (0, 1024 - len(A)%1024), 'constant')
B
# array([1, 2, 3, ..., 0, 0, 0])
len(B)
# 1024
Đối với một A
lớn hơn:
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
Cảm ơn! Nó có hoạt động nếu độ dài ban đầu là 3000 không? (sau đó chiều dài đệm phải là 3072) – Basj
Vì độ dài đệm phải ở đây là sự khác biệt giữa '1024' và phần còn lại của mô-đun' len (A) 'chia cho '1024'. Nó nên được dễ dàng để kiểm tra. – Psidom