Zéro pavé numpy tableau
Ce qui est le plus pythonic façon à compléter un tableau avec des zéros à la fin?
def pad(A, length):
...
A = np.array([1,2,3,4,5])
pad(A, 8) # expected : [1,2,3,4,5,0,0,0]
Dans mon cas d'utilisation, en fait je veux pad un tableau au plus proche multiple de 1024. Ex: 1342 => 2048, 3000 => 3072
source d'informationauteur Basj | 2016-07-04
Vous devez vous connecter pour publier un commentaire.
numpy.pad
avecconstant
mode est ce que vous avez besoin, où l'on peut passer un tuple comme deuxième argument de dire combien de zéros de remplissage sur chaque taille, un(2, 3)
par exemple sera pad 2 zéros sur le côté gauche et 3 zéros sur le côté droit:Donné
A
:Il est également possible d'ajouter un 2D tableaux numpy par le passage d'un tuple de tuples, comme le rembourrage en largeur, qui prend le format de
((top, bottom), (left, right))
:Pour votre cas, vous indiquez le côté gauche à zéro et à droite pad calculée à partir d'une division modulaire:
Pour une plus grande
A
:Cela devrait fonctionner:
Vous pourrait être en mesure d'obtenir des performances légèrement meilleures si vous initialiser un tableau vide (
np.empty(length)
) et puis de remplirA
et lazeros
séparément, mais je doute que les accélérations serait intéressant de code supplémentaire de complexité dans la plupart des cas.Pour obtenir la valeur de pad, je pense que vous auriez probablement juste utiliser quelque chose comme
divmod
:Fondamentalement, c'est juste des chiffres combien de fois 1024 divise la longueur de votre tableau (et ce que le reste de la division de l'est). Si il n'y a pas de reste, alors vous voulez juste
n * 1024
éléments. Si il y a un reste, alors vous voulez(n + 1) * 1024
.tout ensemble:
Vous pouvez également utiliser
numpy.pad
:Et dans une fonction:
Il y a
np.pad
:Au sujet de votre cas d'utilisation, le nombre de zéros de remplissage peut être calculé comme
length = len(A) + 1024 - 1024 % len(A)
.Pour référence future: