Dimensiones

4/24
Recursos

Aportes 30

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Dimensiones


  • scalar: dim = 0 Un solo dato o valor

  • vector: dim = 1 Listas de Python

  • matriz: dim = 2 Hoja de cálculo

  • tensor: dim > 3 Series de tiempo o Imágenes

Declarando un escalar.

scalar = np.array(42)
print(scalar) ----> 42
scalar.ndim ----> 0

Declarando un vector.

vector = np.array([1, 2, 3])
print(vector) ----> [1 2 3]
vector.ndim ----> 1

Declarando una matriz.

matriz = np.array([[1, 2, 3], [4, 5, 6]])
print(matriz)
matriz.ndim
---->[[1 2 3]
 	 	 [4 5 6]]
----> 2

Declarando un tensor.

tensor = np.array([[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]],[[13, 13, 15], [16, 17, 18], [19, 20, 21], [22, 23, 24]]])
print(tensor)
tensor.ndim
----> [[[ 1  2  3]
  		[ 4  5  6]
  		[ 7  8  9]
  		[10 11 12]]

 			[[13 13 15]
  		[16 17 18]
 		 	[19 20 21]
 			[22 23 24]]]	
----> 3

Agregar o eliminar dimensiones

Se puede definir el número de dimensiones desde la declaración del array

vector = np.array([1, 2, 3], ndmin = 10)
print(vector) ----> [[[[[[[[[[1 2 3]]]]]]]]]]
vector.ndim ----> 10

Se pueden expandir dimensiones a los array ya existentes.
Axis = 0 hace refencia a las filas, mientras que axis = 1 a las columnas.

expand = np.expand_dims(np.array([1, 2, 3]), axis = 0)
print(expand) ----> [[1 2 3]]
expand.ndim ----> 2

Remover/comprimir las dimensiones que no están siendo usadas.

print(vector, vector.ndim) ----> [[[[[[[[[[1 2 3]]]]]]]]]] 10
vector_2 = np.squeeze(vector)
print(vector_2, vector_2.ndim) ----> [1 2 3] 1

Reto

  1. Definir un tensor de 5 dimensiones
  2. Sumar una dimensión en algún eje
  3. Borrar dimensiones que no se usen
tensor5 = np.array([[[[1, 2],[3, 4]], [[5, 6],[7, 8]]], [[[1, 2],[3, 4]], [[5, 6],[7, 8]]]], ndmin = 5)
print(tensor5, tensor5.ndim)
[[[[[1 2]
    [3 4]]

   [[5 6]
    [7 8]]]


  [[[1 2]
    [3 4]]

   [[5 6]
    [7 8]]]]] 5
expand5 = np.expand_dims(tensor5, axis=1)
print(expand5, expand5.ndim)
[[[[[[1 2]
     [3 4]]

    [[5 6]
     [7 8]]]


   [[[1 2]
     [3 4]]

    [[5 6]
     [7 8]]]]]] 6
print(expand5, expand5.ndim)
reduced5 = np.squeeze(expand5)
print(reduced5, reduced5.ndim)
[[[[[[1 2]
     [3 4]]

    [[5 6]
     [7 8]]]


   [[[1 2]
     [3 4]]

    [[5 6]
     [7 8]]]]]] 6
[[[[1 2]
   [3 4]]

  [[5 6]
   [7 8]]]


 [[[1 2]
   [3 4]]

  [[5 6]
   [7 8]]]] 4

Reto Completado!!
Creación de matriz con 5 dimensiones

Expandir y borrar espacios de matriz

Para expandir la dimensión, podemos apreciar de mejor de que forma lo hace utilizando .shape sobre el arrray

Para no perder la costumbre 😃

Reto completo

  1. Crear un vector de al menos cinco (5) dimensiones

  2. Agrega una dimensión más

  3. Elimina las dimensiones que no se usan

#Creando el vector de cinco dimensiones
reto_vector = np.array([[[[[1,2,3]],[[4,5,6]],[[7,8,9]]]]])
print(reto_vector)
reto_vector.ndim
#Agregando una dimensión más
expand_reto_vector = np.array([[[[[1,2,3]],[[4,5,6]],[[7,8,9]]]]], ndmin=6)
print(expand_reto_vector) 
expand_reto_vector.ndim
#Me quedo solo con las dimensiones que uso
sqe_vector = np.squeeze(expand_reto_vector)
print(sqe_vector, sqe_vector.ndim)

Reto Cumplido

tensor5d = np.array([[[[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]],[[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]]],[[[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]],[[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]]]])
print(tensor5d, tensor5d.ndim, "Dimensiones")

print("---------------------------") #separator

up_to_6D = np.expand_dims(tensor5d, axis=0)
print(up_to_6D, up_to_6D.ndim, "Dimensiones")

print("---------------------------") #separator

correct_tensor = np.squeeze(up_to_6D)
print(correct_tensor, correct_tensor.ndim, "Dimensiones")

Reto Creación de matriz con 5 dimensiones

  • Definir un tensor con 5 dimensiones como mínimo.
import numpy as np

tensor_5d = np.array([[0, 1, 1], [2, 3, 5], [8, 13, 21], [34, 55, 89]], ndmin = 5)
print(tensor_5d)
tensor_5d.ndim
  • Agregarle una dimensión a alguno de los ejes.
tensor_5d = np.expand_dims(tensor_5d, axis = 0)
print(tensor_5d)
tensor_5d.ndim
  • Eliminar dimensiones que no están definidas.
tensor_5d = np.squeeze(tensor_5d)
print(tensor_5d)
tensor_5d.ndim
tensor = [[[1,2,3],[4,5,6],[7,8,9]],[[1,2,3],[4,5,6],[7,8,9]]]
print(tensor)
tensor_1 = np.expand_dims(tensor,axis=0)
print(tensor_1)
tensor_0 = np.squeeze(tensor_1)
print(tensor_0)

Número de dimensiones:

array.ndim 

Crear un array definiendo las dimensiones:

vector = np.array([1,2,3], ndim=10)

Agregar dimensiones un eje:
Considerar que cuando definimios axis 0 = filas y 1 = columnas

expand = np.expand_dims(np.array([1,2,3], axis = 0)

Eliminar dimensiones que no se usan:

vector = np.squeeze(vector)

Podemos decir que la dimensión es el número de arrays dentro de otro array.

tensor_5d = np.array([1,2,3], ndmin=5)
print(tensor_5d)
tensor_5d_habil = np.squeeze(tensor_5d)
print(tensor_5d_habil)

[[[[[1 2 3]]]]]
[1 2 3]

tensor_5d = np.array([1,2,3], ndmin=5)
print(tensor_5d)
tensor_5d_habil = np.squeeze(tensor_5d)
print(tensor_5d_habil)

[[[[[1 2 3]]]]]
[1 2 3]

reto:

parte 1:

reto = np.array([["squirtle", "bulbasaur", "charmander"],["wartortle","ivysaur","charmeleon"]], ndmin=5)
print(reto, reto.ndim)

--[[[[['squirtle' 'bulbasaur' 'charmander']
    ['wartortle' 'ivysaur' 'charmeleon']]]]] 5

parte 2:

reto2 = np.expand_dims(reto, axis=0)
print(reto2, reto2.ndim)

--[[[[[['squirtle' 'bulbasaur' 'charmander']
     ['wartortle' 'ivysaur' 'charmeleon']]]]]] 6

Parte 3:

print(reto2, reto2.ndim)
reto3 = np.squeeze(reto2)
print(reto3, reto3.ndim)

--[[[[[['squirtle' 'bulbasaur' 'charmander']
     ['wartortle' 'ivysaur' 'charmeleon']]]]]] 6
[['squirtle' 'bulbasaur' 'charmander']
 ['wartortle' 'ivysaur' 'charmeleon']] 2

EJERCICIO: definir un tensor con al menos 5 dimensiones, Sumarle una dimensión en cualquiera de sus ejes. Eliminar la dimensión que no están importando en el objeto que definiste.
Definimos la matriz de 5 dimensiones. A una matriz de 3x3x3 le agrego 2 dimensiones mas usando ndmin=5

np5D = np.array([[[1,2,3], [4,5,6], [7,8,9]],[[11,12,13], [14,15,16],[17,18,19]],[[21,22,23], [24,25,26],[27,28,29]]],ndmin=5)
print(np5D)
np5D.ndim

[[[[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]]

[[11 12 13]
[14 15 16]
[17 18 19]]

[[21 22 23]
[24 25 26]
[27 28 29]]]]]

5

Expando una dimensión a nivel de filas.

np5D_exp = np.expand_dims(np5D,axis=4)
print(np5D_exp)
np5D_exp.ndim

[[[[[[ 1 2 3]]
[[ 4 5 6]]
[[ 7 8 9]]]

[[[11 12 13]]
[[14 15 16]]
[[17 18 19]]]

[[[21 22 23]]
[[24 25 26]]
[[27 28 29]]]]]]

6

Elimina todas las dimensiones que están de mas.

np5D_red = np.squeeze(np5D_exp)  
print(np5D_red)
np5D_red.ndim

[[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]]

[[11 12 13]
[14 15 16]
[17 18 19]]

[[21 22 23]
[24 25 26]
[27 28 29]]]

3

Nos quedamos con la matriz de 3x3x3 (dimensión 3) que le habíamos agregado mas dimensiones al principio.

                           **Reto Completado!**
import numpy as np
## Definir un tensor con 5 dimensiones
## Sumarle una dimension en cualquiera de sus ejes
## Eliminar las dimensiones que están fuera de uso

tensor = np.array([[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]],[[13, 13, 15], [16, 17, 18], [19, 20, 21], [22, 23, 24]]])
print(tensor)
print(tensor.ndim)
tensor = np.expand_dims(tensor, 0)
print(tensor)
print(tensor.ndim)

tensor = np.squeeze(tensor)
print(tensor)
print(tensor.ndim)

Realmente el tema de dimensiones es impresionante.

vector = np.array([1,2,3],ndmin = 5)
print(vector,vector.ndim)
vector = np.expand_dims(vector,axis=4)
print(vector,vector.ndim)
vector = np.squeeze(vector)
print(vector,vector.ndim)

[[[[[1 2 3]]]]] 5
[[[[[[1 2 3]]]]]] 6
[1 2 3] 1

Reto

Yo no se que carajo aprendi

Pero si colocamos un axix=3 se va un poco el tensor. Coloquen:

tensor_1 = np.expand_dims(tensor, axis=3)
print(tensor_1, tensor_1.ndim)

Y les va a devolver esto:

[[[[1]
   [2]]

  [[3]
   [4]]

  [[5]
   [6]]]


 [[[1]
   [2]]

  [[3]
   [4]]

  [[5]
   [6]]]] 4

🥇 Reto Tensor de 5 Dimensiones

tensor = np.array([[[1,2,3,'a'],
                    [4,5,6,'b'],
                    [7,8,9,'c'],
                    [0,2,45,'d']],
                   [[1,2,3,'e'],
                    [4,5,6,'f'],
                    [7,8,9,'g'],
                    [0,2,45,'h']],
                   [[1,2,3,'e'],
                    [4,5,6,'f'],
                    [7,8,9,'g'],
                    [0,2,45,'h']],
                   [[1,2,3,'e'],
                    [4,5,6,'f'],
                    [7,8,9,'g'],
                    [0,2,45,'h']]],ndmin=5)

print(tensor, tensor.ndim,'\n')
tensor_2 = np.squeeze(tensor)
print(tensor_2, tensor_2.ndim)

#output
[[[[['1' '2' '3' 'a']
    ['4' '5' '6' 'b']
    ['7' '8' '9' 'c']
    ['0' '2' '45' 'd']]

   [['1' '2' '3' 'e']
    ['4' '5' '6' 'f']
    ['7' '8' '9' 'g']
    ['0' '2' '45' 'h']]

   [['1' '2' '3' 'e']
    ['4' '5' '6' 'f']
    ['7' '8' '9' 'g']
    ['0' '2' '45' 'h']]

   [['1' '2' '3' 'e']
    ['4' '5' '6' 'f']
    ['7' '8' '9' 'g']
    ['0' '2' '45' 'h']]]]] 5 

[[['1' '2' '3' 'a']
  ['4' '5' '6' 'b']
  ['7' '8' '9' 'c']
  ['0' '2' '45' 'd']]

 [['1' '2' '3' 'e']
  ['4' '5' '6' 'f']
  ['7' '8' '9' 'g']
  ['0' '2' '45' 'h']]

 [['1' '2' '3' 'e']
  ['4' '5' '6' 'f']
  ['7' '8' '9' 'g']
  ['0' '2' '45' 'h']]

 [['1' '2' '3' 'e']
  ['4' '5' '6' 'f']
  ['7' '8' '9' 'g']
  ['0' '2' '45' 'h']]] 3

Reto Completado!

  • Crear un tensor de 5 dimensiones
tensor = np.array([[[[[1,2],[3,4],[5,6]], [[7,8],[9,10],[11,12]]]], [[[[13,14],[15,16],[17,18]], [[19,20],[21,22],[23,24]]]]])
print(tensor, tensor.ndim) 

>>>[[[[[ 1  2]
    [ 3  4]
    [ 5  6]]

   [[ 7  8]
    [ 9 10]
    [11 12]]]]



 [[[[13 14]
    [15 16]
    [17 18]]

   [[19 20]
    [21 22]
    [23 24]]]]] 5
  • Sumar una dimension en el eje de las filas
expand = np.expand_dims(tensor, axis=0)
print(expand, expand.ndim)

>>> [[[[[[ 1  2]
     [ 3  4]
     [ 5  6]]

    [[ 7  8]
     [ 9 10]
     [11 12]]]]



  [[[[13 14]
     [15 16]
     [17 18]]

    [[19 20]
     [21 22]
     [23 24]]]]]] 6 
  • Añadir 5 dimensiones mas al tensor
tensor2 = np.array(tensor, ndmin=10)
print(tensor2, tensor2.ndim)

>>> [[[[[[[[[[ 1  2]
         [ 3  4]
         [ 5  6]]

        [[ 7  8]
         [ 9 10]
         [11 12]]]]



      [[[[13 14]
         [15 16]
         [17 18]]

        [[19 20]
         [21 22]
         [23 24]]]]]]]]]] 10
  • Eliminar las dimensiones vacias
tensor2 = np.squeeze(tensor2)
print(tensor2, tensor2.ndim)

>>>  [[[[ 1  2]
   [ 3  4]
   [ 5  6]]

  [[ 7  8]
   [ 9 10]
   [11 12]]]


 [[[13 14]
   [15 16]
   [17 18]]

  [[19 20]
   [21 22]
   [23 24]]]] 4

Tensor 5 dimensiones:

Se suma 1 dimensión:

Borrar dimensiones que no se usan:

Con el shape podemos también ver el incremento de las dimensiones:

##Reto 
# 1 Definir un tensor de 5D
# 2 Sumarle una dimension en cualquier eje
# 3 Borrar las dimensiones que no se usen

tensor_reto = np.array( [ [1,2,3] , [4,5,6] , [7,8,9] ], ndmin=5)
print(f'El tensor es este\n{tensor_reto} y\ntiene {tensor_reto.ndim} dimensiones')

print()
print()

print('Sumandole una dimension...')
tensor_reto = np.expand_dims(tensor_reto, axis=0)
print(f'El tensor **expandido** es este\n{tensor_reto} y\ntiene {tensor_reto.ndim} dimensiones')


print()
print()

print('Ajustando las dimensiones necesarias...')
tensor_reto = np.squeeze(tensor_reto)
print(f'El tensor **ajustado** es este\n{tensor_reto} y\ntiene {tensor_reto.ndim} dimensiones')


###Output 👇🏻