Dada una array (1D, 2D o 3D) y un elemento para buscar en la array. Si el elemento está presente en la array, imprima la posición del elemento en la array; de lo contrario, imprima «Elemento no encontrado».
En las actualizaciones recientes de Julia , los desarrolladores han unificado las funciones search()
y find()
en una findall()
función más simple. Sin embargo, el resto de sus contrapartes, como, findnext()
, findprev()
etc. siguen siendo accesibles. La find()
función se reemplaza por filter()
el método y indexin()
se agrega una nueva función que devuelve el índice de elementos particulares de una array.
Ejemplos:
Input : array1 = [ 5, 9, 1, 8, 2, 7 ] sch = 8 Output : Element found at position 4 Input : array2 = [ 7 9 2 9 4 1 8 4 6 ] sch = 4 Output : Element found at CartesianIndex(2, 2). Element found at CartesianIndex(3, 2). Input : array3 = [ 22, 7, 91, 69, 2, 74 ] sch = 6 Output : Element not found. [Note: Unlike other languages, In Julia indexing of an Array starts with 1.]
Usando findall()
el método
El findall()
método se usa para encontrar todas las ocurrencias del elemento requerido de una array y devolver una array (o CartesianArray, dependiendo de las dimensiones de la array de entrada) del índice, donde los elementos están presentes en la array de entrada. Si el elemento no está presente en la array de entrada, devuelve una array vacía.
Sintaxis:
findall(::Function, ::Number)
# Julia program to illustrate the # use of findall() method to search # for an element in an array. # Searching for an element in a 1D ARRAY array1 = [ 12, 35, 7, 34, 72, 12, 5 ] sch = 12 indexArray = findall( x -> x == sch, array1 ) for i in indexArray println("Element found at position ", i) end if (length( findall( x -> x == sch, array1 )) == 0) println("Element not found.") end # Searching for an element in a 2D ARRAY # of shape (3 x 3). array2 = [ 23 56 12; 1 7 12; 23 67 34 ] sch = 7 indexArray = findall( x -> x == sch, array2 ) for i in indexArray println("Element found at ", i) end if (length( findall( x -> x == sch, array2 )) == 0) println("Element not found.") end # Searching for an element in a 3D ARRAY # of shape (3 x 3 x 3). array3 = cat([1 2 3; 5 4 2; 3 5 6], [1 5 3; 3 1 7; 8 0 1], [1 3 6; 3 7 7; 8 8 2], dims=3) sch = 14 indexArray = findall( x -> x == sch, array3 ) for i in indexArray println("Element found at ", i) end if (length( findall( x -> x == sch, array3 )) == 0) println("Element not found.") end
Producción:
Usando indexin()
el método
La indexin()
función se utiliza para buscar la posición de la primera aparición del elemento en la array (búsqueda por filas) y devolver su posición en la array. Sin embargo, la búsqueda se detiene tan pronto como el elemento buscado se encuentra en la array. Por lo tanto, esta función siempre devuelve una array de longitud 1. Si el elemento buscado no se encuentra en la array, lo devuelve nothing
en una array.
Sintaxis:
indexin(::Any, ::AbstractArray)
# Julia program to illustrate the # use of indexin() method to search # for an element in an array. # Searching for an element in a 1D ARRAY array1 = [ 12, 35, 7, 34, 72, 12, 7 ] sch = 7 positionArray = indexin( sch, array1 ) if (positionArray .== nothing ) println("Element not found.") else println("Element found at position ", positionArray[1]) end # Searching for an element in a 2D ARRAY # of shape (3 x 3). array2 = [ 23 56 12; 1 7 12; 23 67 34 ] sch = 12 positionArray = indexin( sch, array2 ) if (positionArray .== nothing ) println("Element not found.") else println("Element found at ", positionArray[1]) end # Searching for an element in a 3D ARRAY # of shape (3 x 3 x 3). array3 = cat([1 2 3; 5 4 2; 3 5 6], [1 5 3; 3 1 7; 8 0 1], [1 3 6; 3 7 7; 8 8 2], dims=3) sch = 14 positionArray = indexin( sch, array3 ) if (positionArray .== nothing ) println("Element not found.") else println("Element found at ", positionArray[1]) end
Producción:
Usando filter()
el método
La filter()
función generalmente se usa para filtrar elementos de la array que satisfacen alguna condición particular. Pero también podemos usar esta función para buscar elementos en una array. Sin embargo, esta función, en lugar de devolver el índice, devuelve los propios elementos de la array. Entonces, podríamos simplemente verificar el tamaño de la array devuelta por esta función e imprimir en consecuencia.
Sintaxis:
filter(::Any, ::Array{T, N}) where {T, N} at array.
# Julia program to illustrate the # use of filter() method to search # for an element in an array. # Searching for an element in a 1D ARRAY array1 = [ 12, 35, 7, 34, 72, 12, 7 ] sch = 72 elementArray = filter( x -> x == sch, array1 ) if (length(elementArray) == 0) println("Element not found.") else println("Element found in the array.") end # Searching for an element in a 2D ARRAY # of shape (3 x 3). array2 = [ 23 56 12; 1 7 12; 23 67 34 ] sch = 33 elementArray = filter( x -> x == sch, array2 ) if (length(elementArray) == 0) println("Element not found.") else println("Element found in the array.") end # Searching for an element in a 3D ARRAY # of shape (3 x 3 x 3). array3 = cat([1 2 3; 5 4 2; 3 5 6], [1 5 3; 3 1 7; 8 0 1], [1 3 6; 3 7 7; 8 8 2], dims=3) sch = 3 elementArray = filter( x -> x == sch, array3 ) if (length(elementArray) == 0) println("Element not found.") else println("Element found in the array.") end
Producción:
Además de todas estas funciones integradas para buscar un elemento en una array, también podemos usar los dos algoritmos de búsqueda más comunes, es decir, la búsqueda lineal y la búsqueda binaria .
Publicación traducida automáticamente
Artículo escrito por equbalzeeshan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA