1
votes

Tranchage de liste avancé Python

Je souhaite réduire la taille d'une image en utilisant Python

   array([2, 3, 5, 6, 8, 9])

me donne une image représentant 50% de l'original car la taille de pas de la tranche est de 2. Comment puis-je la faire disons 90% de l'original?

La tranche régulière de python ne m'a pas aidé. Il semble que je ne sais pas comment découper une liste, donc il me renverra par exemple, les éléments 2ème, 3ème, 5ème, 7ème etc. Disons que j'ai quelque chose comme:

   array([1, 3, 5, 7, 9])

L'exécution du code ci-dessus me donne:

    arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
    arr[::2]

Cependant, je veux l'opposé de ce résultat:

    import numpy as np
    from skimage import io

    img = io.imread('img.jpg')
    smallImg = img[::2, ::2]


6 commentaires

Savez-vous ce que signifient les champs entre : ?


Double possible de Ignorer chaque nième index du tableau numpy


arr [np.mod (np.arange (arr.size), 3)! = 0] vous donnerait la sortie souhaitée


Copie possible de Comprendre la notation de tranche


Compte tenu de ce pour quoi vous voulez utiliser le découpage: pour le redimensionnement de l'image, sauter des pixels semble inapproprié. Mieux vaut rechercher des méthodes d'interpolation adaptées ...


Que dois-je faire lorsque quelqu'un répond à ma question?


3 Réponses :


-2
votes

Pour obtenir un tableau ([2, 3, 5, 6, 8, 9]) Vous devez modifier le code pour: arr = np.array ([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) arr [1: -1: 2] j'ai oublié l'étape précédente

Les index négatifs commencent à partir du dernier élément Ainsi, l'élément indexé -1 est le dernier (10) Et l'élément indexé - 2 est avant le dernier (9) et ainsi de suite


2 commentaires

Cela ne donne pas array ([2, 3, 5, 6, 8, 9]). Il donne à la place un tableau ([2, 3, 4, 5, 6, 7, 8, 9]).


Je l'ai édité, réessayez Je suis loin de mon pc en ce moment



0
votes

Utilisez cette méthode de découpage

arr[1:3,4:6,7:9]...

Ou vous pouvez découper la liste 2 valeurs à la fois, la stocker dans une variable différente et ajouter ou étendre la liste ensemble.

p>


0 commentaires

1
votes

nous pouvons facilement y parvenir en spécifiant des valeurs d'index correctes:

In [59]: res
Out[59]: array([2, 3, 5, 6, 8, 9])

résultat:

res = arr[np.arange(len(arr)) % 3 != 0]


0 commentaires