Crea una cuenta o inicia sesión

¡Continúa aprendiendo sin ningún costo! Únete y comienza a potenciar tu carrera

Comienza a utilizar vectores en Python

4/28
Recursos

Aportes 42

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

CUIDADO con el minuto 9:31, ya que, matemáticamente rojo y verde se habían definido como vectores de 3 dimensiones y si los sumamos nos da como resultado otro vector de 3 dimensiones pero python cuando suma listas de largo 3 no nos da como resultado una lista de largo 3 sino que concatena las listas y resulta una lista de largo 6

Ejercicio Negro y Azul 😁

en el minuto 6 aprox, el profe comenta que una tupla es con [ ] y una lista es con ( ) pero es al revés.


Nota:
Va a ser confuso el manejo de los indices, con eso del cambio entre la notación en matemáticas y en programación, tenerlo presente, saludos 😃

$negro_y_azul = negro+azul
$print(negro_y_azul)
[0, 0, 0, 0, 0, 255]
$print('negro:',negro_y_azul[0:3])
$print('azul:',negro_y_azul[3:6])
negro: [0, 0, 0]
azul: [0, 0, 255]

Excelente clase! me gustó como se logró pasar lo de la teoría de los vectores a código con python. Subvectores, stack de vectores, dimensión de vectores.

rojo = [255,0,0]
verde = [0,255,0]
azul = [0,0,255]

Los vectores en Python se representan con la estructura de datos lista

tupla = (1,1,1)

Las tuplas son otra estructura de datos pero son imutables

print(type(rojo))
print(type(tupla))

print('El color rojo se representa con el vector ', rojo)
print(‘El color verde se representa con el vector’, verde)
print(‘El color azul se representa con el vector’, azul)

Para conocer la dimensión de un vector, podemos utilizar el método len

print('La dimensión del vector rojo es ', len(rojo))

Se pueden sumar vectores y así mismo crear stacks de vectores

rojo_verde = rojo + verde
print('La suma del vector rojo y verde es ', rojo_verde)

Se puede hacer sub vectores en python indicando del subindice que parte el vector hasta el ultimo subindice

print('Se partira el vector rojo ', rojo[0:2])

`negro_y_azul = negro+azul

print(‘El subvector del vector negro_y_azul que corresponde al negro es el vector que va del 0:3’, negro_y_azul[0:3])

print(‘El subvector del vector negro_y_azul que corresponde al azul es el vector que va del 3:6’, negro_y_azul[3:6])`

La forma de sumar cada elemento de los vectores en Python es haciendo una iteración por cada uno de los elementos de los vectores con un ciclo (en la mayoría de los caso es mucho mas intuitivo usar ‘for’) y así ir sumado en cada iteración, los valores.

lista1 = [1, 2, 3, 4]
lista2 = [5, 6, 7, 8]

lista3 = []

for i in range(len(lista1)):
    lista3.append(lista1[i] + lista2[i])

print(lista3)```
rojo = [255,0,0]
verde = [0,255,0] 
azul = [0,0,255]
negro = [0,0,0]

Negro_y_Azul = azul + negro

print ('El vector resultante de concatenar los vectores negro y azul es', Negro_y_Azul)

print ('El subvector del vector Negro_y_Azul que corresponde al negro es el vector que va del 0:3 = ', Negro_y_Azul[0:3])

print ('El subvector del vector Negro_y_Azul que corresponde al azul es el vector que va del 3:6 = ', Negro_y_Azul[3:6])```
stack_negro_azul = negro + azul
print(f'el stack entre los vectores negro y azul: {stack_negro_azul}')
#Subvectores
print(f'subvector negro y azul entre 0:3 {stack_negro_azul[0:3]}')
print(f'subvector negro y azul entre 3:6 {stack_negro_azul[3:6]}')
negro = [0,0,0]
azul  = [0,0,255]

negro_azul = negro + azul

print(f"negro {negro_azul[0:4]}")
print(f"azul {negro_azul[3:7]}")

Es importante tener en cuenta que, tal como vimos al principio de la clase, el modelo RGB completo se denota como (ℤ^3 , +). Sin embargo, la operación de la suma para dicho modelo no corresponde ni con la concatenación que se hizo en clase, ni tampoco con la suma tradicional de vectores donde se suman los elementos con el mismo índice.

Hay una pequeña sutileza, ya que, para el modelo RGB, la suma está definida como la suma de los elementos con el mismo índice DIVIDIDOS por el número de vectores/colores que se estén sumando (a manera de un promedio).

Por ende, si queremos sumar el color amarillo con el verde, tendríamos los vectores:

amarillo = [255, 255, 0]
verde = [ 0, 0, 255]

Y si, lo que queremos es sumar los colores, tendriamos que hacerlo de esta forma:

# Se crea una lista vacía para guardar la suma de los colores
suma_colores = []

# Se itera sobre los índices de los colores
for i in range(3):
    # Se aplica el promedio
    valor_indice_i = (amarillo[i] + verde[i]) / 2
    # Se redondea al entero más cercano
    valor_indice_i = int(round(valor_indice_i, 0))
    # Se agrega el valor a la lista
    suma_colores.append(valor_indice_i)

Con lo cual, obtendriamos el vector:

[128, 128, 128]

El cual corresponde al color gris, que difiere de lo que podríamos pensar a simple vista que sería el resultado si fuera una suma de vectores estándar donde el resultado sería el vector [255, 255, 255] lo cual nos devolvería un color blanco.

Este tipo de cosas es importante tenerlas en cuenta, ya que, en muchos casos, en programación tenemos modelos donde las operaciones tradicionales entre nuestros vectores no se pueden aplicar directamente. Tal como fue el caso de este modelo, donde la operación de la suma tuvo que ser definida de esta forma, puesto que, de otra manera, se podrían dar muchos casos donde la suma nos diese elementos con un valor mayor al 255 los cuales no están definidos para el modelo y por ende, un computador no sabría interpretarlos.

Quisiera aclarar sobre algo que puede ser confuso para algunas personas. En las líneas de código 17 y 19 se aplica el concepto de **slicing en Python**, lo cual consiste en extraer una porción de una secuencia (lista, tupla o string). Aquí lo importante es que cuando se realiza slicing se incluyen elementos desde el índice 0 (o el primer índice que le pasemos) hasta **antes del último índice** que le pasemos. La sintáxis básica del slicing es: secuencia(inicio:final:salto). \- **secuencia**: es la variable **Rojo\_y\_Verde** en la cual incluimos nuestras 2 listas **rojo** y **verde**. \- **inicio**: el índice de inicio del slice (incluyente). \- **final**: el índice final del slice (excluyente). \- **salto (opcional)**: el salto que se da para omitir elementos cada determinada cantidad de elementos. Así pues, en nuestro ejemplo. `Rojo_y_Verde = [255, 0, 0, 0, 255, 0]` `print(Rojo_y_Verde[0:3])` Se van a imprimir los índices 0, 1 y 2, pero no el 3. `[255, 0, 0]`
## Reto Cumplido ![](https://static.platzi.com/media/user_upload/exerciceRBG-5ae3cbe7-75ac-4ac1-9d16-d4b8eb7727c2.jpg)

Operaciones con vectores:

Una vez que tienes tus vectores creados, puedes realizar diversas operaciones matemáticas con ellos. Por ejemplo, para sumar dos vectores, simplemente utilizas el operador de suma +:

v = np.array([1, 2, 3])
v = np.array([[1, 2, 3]])

v1 = np.array([1, 2, 3])
v2 = np.array([4, 5, 6])
suma = v1 + v2

v = np.array([1, 2, 3])
escalar = 2
multiplicacion = v * escalar

Se repasan conceptos de Python y enterder de la mejor forma los vectores

  • Si hablamos de la notación con paréntesis lo que estaríamos denotando son tuplas.
  • si hablamos de la notación con corchetes cuadrados lo que estaríamos denotando son listas.
  • Si hablamos de la notación con paréntesis lo que estaríamos denotando son listas.
  • si hablamos de la notación con corchetes cuadrados lo que estaríamos denotando son tuplas.
  • En el caso de python los números se pueden representar como int o float, es decir los escalares.
  • Los vectores los podemos representar con unas de las estructuras más básicas de python esas son las listas.
  • El color negro en el modelo RGB se puede representar por el vector: [ 0, 0, 0 ].
  • El color rojo en el modelo RGB se puede representar por el vector: [ 255, 0, 0 ].
  • El color azul en el modelo RGB se puede representar por el vector: [ 0, 0, 255 ]
  • El color verde en el modelo RGB se puede representar por el vector: [ 0, 255, 0 ].

No ignorar la distinción total de los conceptos en python y en matemáticas. Ya que en matemáticas se suman los componentes de los vectores en ‘‘x’,’ y los componentes de los vectores en ‘‘y’’ de x vector y y vector.

De acuerdo a los visto en clase:

Con respecto al concepto matemático:

Todo claro: el operador < + > concatena listas y esto genera un stack de vectores y luego mediante los índices podemos obtener el subvector correspondiente. en este caso hay 255**3 vectores en el espacio Vectorial.

Reto completado!

azul = [0,0,255]
negro = [0,0,0]
negroyazul = negro+azul

print(f'El vector negro_y_azul es: {negroyazul}')
print(f'El vector negro es: {negroyazul[0:3]}')
print(f'El vector azul es: {negroyazul[3:6]}')

Aqui deje ele ejercio, tomando como notación la propuesta por el profesor. voy a pasarla a python.

Ejercicio de Negro_Azul

Ejercicio:

Negro_y_azul = negro + azul
print('El vector resultante de concatenar los vectores negro y azul es',Negro_y_azul)

print('El subvector del vector Negro_y_azul que corresponde al negro es el vector que va del 0:3', Negro_y_azul[0:3])

print('El subvector del vector Negro_y_azul que corresponde al azul es el vector que va del 0:3', Negro_y_azul[3:6])

Hice el ejercicio de esta clase en Deepnote, es más fácil trabajar ahí porque no necesitas descargar nada.

Challenge completed

Eh notado que todo se me hace mucho mas fácil de entender explicándolo con código. Por alguna razón cobra mas sentido para mi.

Negro_Azul = negro+azul
print('Vector negro:', Negro_Azul[:3])
print('Vector azul: ', Negro_Azul[3:])

challenge completed

Azul_y_negro = azul + negro
print('La concatenación de los vectores Azul y negro es:', Azul_y_negro)
print('El subvecto del Azul_y_Negro que corresponde al azul va del 0:3', Azul_y_negro[0:3])
print('El subvecto del Azul_y_Negro que corresponde al negro va del 0:3', Azul_y_negro[3:6])

Y como aporte, el color blanco es la suma de todos los vectores de rojo, verde y azul:

blanco = [255,255,255]
negro_y_azul = negro+azul
print('El vector resultante de concatenar los vectores negro y azul es',negro_y_azul)
print('El subvector del vector negro_y_azul que corresponde al negro es el vector que va del 0:3', negro_y_azul[0:3])
print('El subvector del vector negro_y_azul que corresponde al azul es el vector que va del 3:6', negro_y_azul[3:6])
def extraer (color):
    if color == 'azul':
        print(f'Azul= {azul_negro[3:6]}')
    elif color == 'negro':
        print(f'Negro= {azul_negro[0:3]}')


if __name__ == "__main__":
    azul = [0, 0, 255]
    negro = [0, 0, 0]
    azul_negro = negro + azul
    color = input('De que color desea obtener el vector?:'
                  '-Azul'
                  '-Negro')
    extraer(color)

Ejercicio:

azul = [0, 0, 255]
negro = [0, 0, 0]

negro_azul = negro + azul

negro_azul_sub_negro = negro_azul[0:3]
negro_azul_sub_azul = negro_azul[3:6]

azul  = [0,0,255]
negro = [0,0,0]
negro_azul = negro + azul

print(f"negro {negro_azul[0:3]}")
print(f"azul {negro_azul[3:6]}")```