[PYTHON] Comment utiliser numpy.vectorize

Aperçu

Je suis accro à l'utilisation de la fonction de vectorisation du module de calcul scientifique python numpy, donc un mémo pour moi En passant, cette fois, j'ai posté cet article en utilisant l'exemple de création d'un histogramme de l'image d'entrée dans le traitement d'image.

Objectif de numpy.vectorize

Vectorize est une fonction qui transforme une fonction python afin qu'une liste puisse être insérée en une qui prend une valeur comme argument. Chaque valeur du tableau d'entrée sera calculée en tant qu'argument et la valeur de retour sera vectorisée.

Comment utiliser numpy.vectorize

Tout d'abord, préparez une fonction dont la valeur de retour n'est pas une liste.

myfunc.py


def myfunc(a,b):
      return a+b

print myfunc("hoge","Hoge")

La sortie ressemble à ceci:

"hogeHoge"

Pensez à plonger un vecteur dans ce myfunc.

myfunc.py


def myfunc(a,b):
      return a+b

list = ["hoge","fuga"]

print myfunc(list,"Hoge")

Je veux que la sortie ressemble à ceci:

["hogeHoge","fugaHoge"]

Mais en réalité

TypeError: can only concatenate list (not "str") to list

Sera. C'est parce qu'il n'a pas été initialement défini pour prendre une liste comme argument. Cependant, vous pouvez obtenir la sortie attendue en vectorisant myfunc avec numpy.vectorize.

vfunc=numpy.vectorize(myfunc)
print vfunc(list,"Hoge")

La sortie est

["hogeHoge","fugaHoge"]

La liste est renvoyée. Maintenant, la vectorisation de la fonction est réalisée.

Exemple pratique

Je vais laisser un exemple plus pratique. Créez une fonction qui crée un histogramme de l'image d'entrée par traitement d'image.

import numpy as np
import cv2
from matplotlib import pyplot as plt

#Fonction de création d'un histogramme
def img_hist(src,bins_array):
        x = np.where(src==bins_array,1,0)
        count = np.count_nonzero(x)
        return count
#Vectorisation
vhist = np.vectorize(img_hist)
vhist.excluded.add(0) #Le 0ème argument est passé à la fonction tel quel en tant que vecteur fixe

#Préparez un fichier source et un bac de l'histogramme
src = cv2.imread("origin/LENNA.pgm",flags=0)
bins_array = np.arange(256)

#Créer un histogramme
hist_array=vhist(src,bins_array)

#Visualisez l'histogramme
plt.plot(bins_array,hist_array)
plt.show()

L'image d'entrée est classique

En conséquence, l'histogramme suivant est obtenu.

Résumé

Recommended Posts

Comment utiliser numpy.vectorize
Comment utiliser xml.etree.ElementTree
Comment utiliser Python-shell
Remarques sur l'utilisation de tf.data
Comment utiliser virtualenv
Comment utiliser Seaboan
Comment utiliser la correspondance d'image
Comment utiliser Pandas 2
Comment utiliser Virtualenv
Comment utiliser pytest_report_header
Comment utiliser partiel
Comment utiliser Bio.Phylo
Comment utiliser SymPy
Comment utiliser x-means
Comment utiliser WikiExtractor.py
Comment utiliser IPython
Comment utiliser virtualenv
Comment utiliser Matplotlib
Comment utiliser iptables
Comment utiliser numpy
Comment utiliser TokyoTechFes2015
Comment utiliser venv
Comment utiliser le dictionnaire {}
Comment utiliser Pyenv
Comment utiliser la liste []
Comment utiliser python-kabusapi
Comment utiliser OptParse
Comment utiliser le retour
Comment utiliser pyenv-virtualenv
Comment utiliser imutils
Comment utiliser Qt Designer
Comment utiliser la recherche triée
[gensim] Comment utiliser Doc2Vec
python3: Comment utiliser la bouteille (2)
Comprendre comment utiliser django-filter
[Python] Comment utiliser la liste 1
Comment utiliser FastAPI ③ OpenAPI
Comment utiliser Python Argparse
Comment utiliser IPython Notebook
Comment utiliser Pandas Rolling
[Note] Comment utiliser virtualenv
Comment utiliser les dictionnaires redis-py
Python: comment utiliser pydub
[Python] Comment utiliser checkio
[Aller] Comment utiliser "... (3 périodes)"
Comment faire fonctionner GeoIp2 de Django
[Python] Comment utiliser input ()
Comment utiliser le décorateur
[Introduction] Comment utiliser open3d
Comment utiliser Python lambda
Comment utiliser Jupyter Notebook
[Python] Comment utiliser virtualenv
python3: Comment utiliser la bouteille (3)
python3: Comment utiliser la bouteille
Comment utiliser Google Colaboratory
Comment utiliser les octets Python
Comment utiliser cron (mémo personnel)
Python: comment utiliser async avec