Python
Résolu/FerméSoma1316 Messages postés 17 Date d'inscription vendredi 3 mars 2023 Statut Membre Dernière intervention 25 mai 2023 - 3 mai 2023 à 23:34
1 réponse
3 mai 2023 à 21:06
Bonjour,
L'erreur est due au fait que la taille de la chaîne de caractères générée par la fonction `permutation` n'est pas la même que la taille de la matrice `R_m`. Plus précisément, la chaîne de caractères est de taille 119576, tandis que la matrice `R_m` est de taille (251, 201).
La fonction `permutation` utilise la méthode `tobytes()` pour convertir la matrice de pixels en une chaîne de caractères. Cette méthode retourne une chaîne d'octets représentant les éléments de la matrice, et la taille de la chaîne dépend de la taille de la matrice.
Cependant, la fonction `permutation` convertit la chaîne d'octets en une chaîne de caractères à l'aide de la méthode `join()`. Cette méthode utilise un séparateur (ici, une chaîne vide) pour concaténer les éléments de la liste de caractères. La taille de la chaîne de caractères résultante dépend donc du nombre d'éléments dans la liste de caractères.
Il semble que la fonction `permutation` ne soit pas adaptée à la taille des matrices de pixels utilisées dans votre programme. Vous pouvez essayer d'adapter la fonction en modifiant la façon dont la chaîne de caractères est construite, par exemple en utilisant la méthode `flatten()` pour transformer la matrice en un tableau à une dimension avant de la convertir en chaîne de caractères.
Voici un exemple de modification possible de la fonction `permutation` :
def permutation(pix): pixel = np.ndarray.flatten(pix) np.random.shuffle(pixel) return pixel.tobytes().decode()
Cette nouvelle version de la fonction utilise `flatten()` pour transformer la matrice `pix` en un tableau à une dimension. Elle mélange ensuite les éléments du tableau à l'aide de `shuffle()`, puis convertit le tableau en chaîne de caractères à l'aide des méthodes `tobytes()` et `decode()`.
Source: ChatGPT
3 mai 2023 à 23:34
Merci.