Revista Informática

Concatenar vectores en Julia

Publicado el 01 diciembre 2021 por Daniel Rodríguez @analyticslane
Concatenar vectores en Julia

Al trabajar con vectores es habitual tener que combinarlos. Veamos las opciones que tenemos para concatenar vectores en Julia.

Concatenar vectores con las funciones vcat() y hcat()

Las funciones estándar para concatenar el contenido de diferentes estructuras de datos en Julia son vcat(), para combinar conjuntos de datos en vertical o por filas, y hcat(), para cuando se desea combinar en horizontal o por columnas. Funciones que también sirven para concatenar DataFrames. Así para concatenar vectores en Julia se debería usar la función vcat() con los vectores a concatenar como parámetros

julia> var1 = [1, 2, 3];

julia> var2 = [4, 5, 6];

julia> vcat(var1, var2)
6-element Vector{Int64}:
 1
 2
 3
 4
 5
 6

En el caso de que se usase la función hcat() no se obtendría un vector, sino una matriz. Ya que los vectores de Julia son verticales por defecto.

julia> hcat(var1, var2)
3×2 Matrix{Int64}:
 1  4
 2  5
 3  6

Solamente se debería usar hcat() cuando el vector ha sido transpuesto previamente.

Concatenar con la función cat()

La función cat() es una generalización de vcat() y hcat() en la que se indica mediante la propiedad dims cuál es la dimensión que se desea concatenar. Siendo 1 el valor para concatenar verticalmente y 2 para horizontal. Esta propiedad debe ser la última que se indique después de los conjuntos de datos a concatenar. Así, para replicar el comportamiento de vcat() se debería hacer.

julia> cat(var1, var2, dims=1)
6-element Vector{Int64}:
 1
 2
 3
 4
 5
 6

Mientras que para replicar el comportamiento de hcat() lo que se debería escribir es:

julia> cat(var1, var2, dims=2)
3×2 Matrix{Int64}:
 1  4
 2  5
 3  6

Pudiendo de esta manera usar una única función para ambos casos y trabajar con más dimensiones cuando es necesario.

Uso de corchetes

En Julia también es posible concatenar vectores y matrices usando corchetes. Una notación compacta que permite ahorrar código. En este caso solamente hay que indicar los objetos dentro de los corchetes, de forma análoga a cómo se crean los vectores, separados por punto y coma, para concatenar verticalmente, o coma, para concatenar horizontalmente. De este modo se puede replicar el funcionamiento de vcat() con la siguiente línea.

julia> [var1; var2]
6-element Vector{Int64}:
 1
 2
 3
 4
 5
 6

Lo que es más compacto que usar cualquiera de las funciones anteriores. Por otro lado, para replicar el funcionamiento de hcat() se podría conseguir con

julia> [var1 var2]
3×2 Matrix{Int64}:
 1  4
 2  5
 3  6

Conclusiones

En esta entrada hemos visto algunas opciones que tenemos para concatenar vectores en Julia, una operación sencilla, pero que es necesario hacer de forma habitual.

Imagen de Lubos Houska en Pixabay


Volver a la Portada de Logo Paperblog