Equivalente función find de Matlab
Publicado por Miquel (2 intervenciones) el 20/03/2007 18:57:29
Hola!
Estoy haciendo unas traducciones de unas funciones escritas en Matlab a lenguaje Python. Me he encontrado con la función find(), que busca en un array una cierta condición y te devuelve los índices del mismo donde esta se cumple.
Parece ser que su equivalencia podria ser algo como (a>2).nonzero(), donde a es el array sobre el que buscar. El problema viene con el tipo de datos que nos devuelve esta función. No puedo manejarlo, en prinicpio debería ser un array pero obtengo lo siguiente:
>>> from numpy import *
>>> a=array([0,1,0,1,2,0,1,2,0,0])
>>> print a
[0 1 0 1 2 0 1 2 0 0]
>>> b=(a>0).nonzero()
>>> print b
(array([1, 3, 4, 6, 7]),)
>>> print (a>0).nonzero()
(array([1, 3, 4, 6, 7]),)
Alguien sabe como solucionarlo?
Gracias de antemano,
Miquel
Estoy haciendo unas traducciones de unas funciones escritas en Matlab a lenguaje Python. Me he encontrado con la función find(), que busca en un array una cierta condición y te devuelve los índices del mismo donde esta se cumple.
Parece ser que su equivalencia podria ser algo como (a>2).nonzero(), donde a es el array sobre el que buscar. El problema viene con el tipo de datos que nos devuelve esta función. No puedo manejarlo, en prinicpio debería ser un array pero obtengo lo siguiente:
>>> from numpy import *
>>> a=array([0,1,0,1,2,0,1,2,0,0])
>>> print a
[0 1 0 1 2 0 1 2 0 0]
>>> b=(a>0).nonzero()
>>> print b
(array([1, 3, 4, 6, 7]),)
>>> print (a>0).nonzero()
(array([1, 3, 4, 6, 7]),)
Alguien sabe como solucionarlo?
Gracias de antemano,
Miquel
Valora esta pregunta


0