Julia

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

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez

Recent Posts

Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

En la era del dato, las organizaciones se enfrentan al reto de gestionar volúmenes masivos…

4 días ago

Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)

En la serie Creación de una API REST con Express y TypeScript construimos una API…

6 días ago

Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte

Durante la Segunda Guerra Mundial, la Fuerza Aérea de Estados Unidos quería reforzar sus aviones…

2 semanas ago

Cómo abrir una ventana de Chrome con tamaño y posición específicos desde la línea de comandos en Windows

En muchas situaciones —ya sea para grabar un tutorial, tomar capturas de pantalla profesionales, probar…

2 semanas ago

La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento

Imagínate en una sala con un grupo de personas, por ejemplo, en una oficina, un…

3 semanas ago

Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)

En el trabajo diario con ordenadores, es común encontrarse con tareas repetitivas: realizar copias de…

3 semanas ago

This website uses cookies.