Conceptos básicos de álgebra lineal y configuración del entorno de trabajo

1

Presentación del curso y la necesidad del Álgebra Lineal

2

Anaconda + Python, Creación de un entorno y actualización de paquetes

3

Uso de Jupyter Notebook

4

Creando las bases, escalares, vectores y matrices. ¿Qué es un tensor? ¿Cómo se representa?

Realiza operaciones básicas

5

Dimensión de un escalar, vector, matriz o tensor

6

Transposición, suma de matrices y escalares

7

Suma de matrices y vectores (broadcasting)

Operaciones con matrices

8

Producto interno entre una matriz y un vector

9

Producto interno entre dos matrices

10

Propiedades de las matrices: la multiplicación de matrices es asociativa y distributiva, no es conmutativa

11

Transposición de un producto de matrices

12

Cómo comprobar la solución de un sistema de ecuaciones lineal

13

Tipos especiales de matrices: Identidad, Inversa, Singulares

14

Aplicación de la inversa de una matriz para resolver un sistema de ecuaciones lineales

Sistema de ecuaciones lineales

15

Ejemplos de sistemas sin solución, con una solución y con infinitas soluciones

16

Graficar vectores

17

¿Qué es una combinación líneal?

18

¿Qué es un espacio y un subespacio?

19

Vectores linealmente independientes

20

Validar que una matriz tenga inversa

Normas

21

Qué es una norma y para qué se usa. Desigualdad Triangular

22

Tipos de normas: norma 0, norma 1, norma 2, norma infinito y norma L2 al cuadrado

23

El producto interno como función de una norma y su visualización

Matrices y vectores especiales

24

La matriz diagonal y la matriz simétrica: sus propiedades

25

Vectores ortogonales, matrices ortogonales y sus propiedades

26

Matrices ortogonales y sus propiedades

Otras funciones de álgebra lineal

27

El determinante y la traza

28

Cierre del curso. Continua con el Curso de Álgebra Lineal Aplicada a Machine Learning.

Crea una cuenta o inicia sesión

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

Creando las bases, escalares, vectores y matrices. ¿Qué es un tensor? ¿Cómo se representa?

4/28
Recursos

Aportes 176

Preguntas 15

Ordenar por:

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

No sabía exactamente por qué la función .imshow recibía un tensor si lo que mostraba se parecía más a una matriz, hasta que me puse a experimentar con los números y me di cuenta que realmente sí es una matriz con vectores de colores en RGB, la primera posición del vector es el rojo, la segunda el verde y la tercera el azul

Yoshi hecho con tensores


Hecho con amor…!

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

tensor = np.array([
    
[[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0]],
[[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0]],
[[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0]],
[[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0]],
[[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0]],
[[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0]],
[[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0],[255,255,0]],
[[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205]],
[[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[255,255,255],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205]],
[[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[255,255,255],[0,0,205],[0,0,205],[0,0,205],[255,255,255],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205]],
[[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[255,255,255],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[255,255,255],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205]],
[[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205]],
[[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[255,255,255],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[255,255,255],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205]],
[[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205],[0,0,205]],
[[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0]],
[[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0]],
[[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0]],
[[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0]],
[[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0]],
[[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0]],
[[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0],[255,0,0]],
])

plt.imshow(tensor, interpolation="nearest")
plt.show()```

escalar = 42
import numpy as np
vector = np.array([2,5,7])
matriz = np.array([[1,5],[9,4],[5,5]])

tensor = np.array([
[[255,255,255],[255,255,255],[255,255,255]],
[[0,0,0],[0,0,0],[0,0,0]],
[[128,128,128],[128,128,128],[128,128,128]]
])

%matplotlib inline
import matplotlib.pyplot as plt
plt.imshow(tensor, interpolation=‘nearest’)
plt.show()

  • Vectores: arreglo unidimensional.
  • Matriz: arreglo bidimensional.
  • Tensores: arreglo de una o N dimensiones.

Hice el logo de Platzi.

Tipos de datos

  • Escalar: en matemáticas se refiere a un número, en python se refiere a cualquier dato que ya no podemos dividir en más componentes.
  • Vector: es un grupo de escalares en forma de lista, sólo tiene una dimensión,
  • Matriz: es un grupo de vectores, podríamos decir una lista de listas. Tiene dos dimensiones
  • Tensor: es un grupo de matrices (una lista de matrices). Tiene tres dimensiones. Podemos pensar en un cubo de Rubik como un tensor.

Notas:

  • El módulo numpy (numerical python) nos sirve entre otras cosas para trabajar con arreglos numéricos (vectores, matrices o tensores) en python
import numpy as np #importacion convencional de numpy
arreglo_num = np.array([<arreglo>])
  • matplotlib,pyplot → un módulo de graficado en python (ahora lo usamos para graficar colores)
%matplotlib inline #con esta línea podemos graficar directamente en jupyter notebook
import matplotlib.pyplot as plt #importacion convencional de pyplot
plt.imshow(tensor, interpolation='nearest') #imshow recibe un tensor que representa los colores en RGB de una imagen
plt.show()

Me encantó el iniciar el tema de tensores con un ejemplo tan claro su potencial como es en el ámbito de ver, crear e interpretar imágenes.

Yo hice la bandera de mi país (México) con pixeles😅

Les dejo el código que usé (como verán, usé variables para nombrar los diferentes colores: Green, Red, Light Green, etc. y hacer el código más entendible):

# Reto Extendido
G=[0,68,47]
R=[200,12,29]
W=[255,255,255]
B=[133,59,22]
LG=[101,108,38]
LB=[7,122,125]
O=[249,162,69]
tensorMexico=np.array([
#     Parte de arriba
    [G,G,G,G,G,G,G,G,G,W,W,W,W,W,W,W,W,W,R,R,R,R,R,R,R,R,R],
    [G,G,G,G,G,G,G,G,G,W,W,W,W,W,W,W,W,W,R,R,R,R,R,R,R,R,R],
    [G,G,G,G,G,G,G,G,G,W,W,W,W,W,W,W,W,W,R,R,R,R,R,R,R,R,R],
    [G,G,G,G,G,G,G,G,G,W,W,W,W,W,W,W,W,W,R,R,R,R,R,R,R,R,R],
#     Logo
    [G,G,G,G,G,G,G,G,G,W,W,W,W,B,W,W,W,W,R,R,R,R,R,R,R,R,R],
    [G,G,G,G,G,G,G,G,G,W,W,W,W,W,B,W,W,W,R,R,R,R,R,R,R,R,R],
    [G,G,G,G,G,G,G,G,G,W,LG,B,B,W,B,B,W,W,R,R,R,R,R,R,R,R,R],
    [G,G,G,G,G,G,G,G,G,W,W,LG,B,B,B,B,B,W,R,R,R,R,R,R,R,R,R],
    [G,G,G,G,G,G,G,G,G,W,W,LG,W,B,B,B,B,W,R,R,R,R,R,R,R,R,R],
    [G,G,G,G,G,G,G,G,G,W,W,W,B,B,B,B,W,W,R,R,R,R,R,R,R,R,R],
    [G,G,G,G,G,G,G,G,G,W,LG,R,W,B,B,R,LG,W,R,R,R,R,R,R,R,R,R],
    [G,G,G,G,G,G,G,G,G,W,LG,W,G,R,G,W,LG,W,R,R,R,R,R,R,R,R,R],
    [G,G,G,G,G,G,G,G,G,W,W,LG,LB,O,LB,LG,W,W,R,R,R,R,R,R,R,R,R],
    [G,G,G,G,G,G,G,G,G,W,W,W,LG,LG,LG,W,W,W,R,R,R,R,R,R,R,R,R],
#     Parte de abajo
    [G,G,G,G,G,G,G,G,G,W,W,W,W,W,W,W,W,W,R,R,R,R,R,R,R,R,R],
    [G,G,G,G,G,G,G,G,G,W,W,W,W,W,W,W,W,W,R,R,R,R,R,R,R,R,R],
    [G,G,G,G,G,G,G,G,G,W,W,W,W,W,W,W,W,W,R,R,R,R,R,R,R,R,R],
    [G,G,G,G,G,G,G,G,G,W,W,W,W,W,W,W,W,W,R,R,R,R,R,R,R,R,R],
])

Aquí mi pequeño aporte 😄

Hice una función que te arrojase una matriz con números al azar para después mostrarla, ojalá alguien lo pruebe jsjsjs.

import random
def matriz_aleatoria():
    tensor = []
    for i in range(3):
        fila = []
        for j in range(3):
            fila.append(random.randint(0,255))
        tensor.append(fila)
    return tensor
plt.imshow(matriz_aleatoria(),interpolation='nearest')
plt.show()

Y aquí el resultado:

http://mathesaurus.sourceforge.net/numeric-numpy.html buen enlace para revisar temas de operaciones básicas en matemáticas con python.

getting closer to being an artificial intelligence engineer

escalar_ = 42

import numpy as np
vector_ = np.array([2,3,5,7])

matriz_ = np.array([[1,2],[3,4],[5,6]])

tensor = np.array([
[[255,255,255],[255,255,255],[255,255,255]],
[[0,0,0],[0,0,0],[0,0,0]],
[[128,128,128],[128,128,128],[128,128,128]]
])

%matplotlib inline
import matplotlib.pyplot as plt
plt.imshow(tensor, interpolation=‘nearest’)
plt.show()

Los escalares, vectores, matrices, tensores se diferencian en los grados de libertad que tenemos para interactuar.

Escalar: en matemáticas es un número cualquiera, pero en python un escalar puede ser varias cosas (número entero, punto flotante, número complejo, string, null type, booleano, etc)

escalar = 5.7686
print(escalar)
5.7686

Vector: es un conjunto de números

vector = np.array([2,3,5,7])
print(vector)
[2 3 5 7]

Matriz: tiene 2 grados de libertad, el conjunto de varios vectores

matriz = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(matriz)

**Tensor:**tiene 3 o más grados de libertad, es el conjunto de matrices

tensor = np.array([
    [[14,24,34],[45,55,56],[67,68,79]],
    [[100,101,102],[103,104,105],[160,170,180]],
    [[190,200,210], [220,230,204], [255,227,238]]
])
print(tensor)
[[[ 14  24  34]
  [ 45  55  56]
  [ 67  68  79]]

 [[100 101 102]
  [103 104 105]
  [160 170 180]]

 [[190 200 210]
  [220 230 204]
  [255 227 238]]]

Super claro esa diferencia entre vector, matriz y Tensor, por sus grados de libertad.

Matemáticamente, el tensor es un objeto que tiene ciertas reglas de transformación. Hay tensores de rango 0 (escalares), tensores de rango 1 (vectores), tensores de rango 2 ( que tienen una representación matricial pero no todas las matrices son tensores) , y los tensores de rango superiores. No confundir matrices con tensores de rango 2, los ultimos pueden sere representados como matrices pero es solo la forma de mostrar los datos nada mas.

Resumen de la clase:

  • Conoceremos los elementos básicos para hacer las construcciones de algebra lineal que a su vez se utilizan en los algoritmos de de machine Learning, Deep Learning y análisis de datos.
  • Tenemos el escalar, el vector, la matriz y el tensor, los cuales se diferencian en los grados de libertad.

Escalar:

  • Una cantidad escalar es simplemente un número.

Vector

  • Un vector es un conjunto de números. Tiene un grado de libertad

Matriz

  • Una matriz es un conjunto de vectores, tiene 2 grados de libertad.

Tensor

  • Este tendrá 1 o más grados de libertad que la matriz.

Mi Perú ❤️

¿Doge o Shiba?🐕‍🦺

👌Fue la explicación más clara de qué es un escalar, un vector, una matriz y un tensor que he escuchado 📚

tensor = np.array([
    [[255, 255, 0],[255, 255, 0],[255, 255, 0]],
    [[0, 0, 255],[0, 0, 255],[0, 0, 255]],
    [[255,0,0],[255,0,0],[255,0,0]]
])

Preparandonso para el mundial, hize la bandera de mi México lindo y querido

tensor = np.array([
    [[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0]],
    [[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0]],
    [[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0]],
    [[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0]],
    [[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0]],
    
    [[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[139, 69, 19],[255,255,255],[255,255,255],[255,255,255],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0]],
    [[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[139, 69, 19],[139, 69, 19],[255,255,255],[255,255,255],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0]],
    [[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[255,255,255],[255,255,255],[139, 69, 19],[139, 69, 19],[255,255,255],[139, 69, 19],[139, 69, 19],[255,255,255],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0]],
    [[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[255,255,255],[255,255,255],[255, 255, 0],[139, 69, 19],[139, 69, 19],[139, 69, 19],[139, 69, 19],[255,255,255],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0]],
    [[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[255,255,255],[255,255,255],[255,255,255],[139, 69, 19],[139, 69, 19],[139, 69, 19],[139, 69, 19],[255,255,255],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0]],
    [[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[255,255,255],[255,255,255],[255,255,255],[139, 69, 19],[139, 69, 19],[139, 69, 19],[255,255,255],[255,255,255],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0]],
    [[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[255,255,255],[255,255,255],[255, 255, 0],[255,255,255],[139, 69, 19],[139, 69, 19],[139, 69, 19],[255,255,255],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0]],
    [[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[255,255,255],[0, 128, 0],[0, 128, 0],[255,255,255],[255, 255, 0],[255,255,255],[255,255,255],[255,255,255],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0]],
    [[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[255,255,255],[255,255,255],[255,255,255],[0, 128, 0],[0, 128, 0],[0, 128, 0],[255,255,255],[255,255,255],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0]],
    [[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[255,255,255],[0, 128, 0],[255,255,255],[255, 255, 0],[255, 255, 0],[255,255,255],[0, 128, 0],[255,255,255],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0]],
    [[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[255,255,255],[0, 128, 0],[0, 128, 0],[255,255,255],[255,255,255],[0, 128, 0],[0, 128, 0],[255,255,255],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0]],
    [[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[255,255,255],[255,255,255],[255,255,255],[0, 128, 0],[0, 128, 0],[255,255,255],[255,255,255],[255,255,255],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0]],

    [[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0]],
    [[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0]],
    [[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0]],
    [[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0]],
    [[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[0, 128, 0],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0],[255, 0, 0]],
])

plt.imshow(tensor, interpolation = "nearest")
plt.show()

Escala: Lista de numeros int, float, o strings o null
Vectores: Lista de Escalas
Matrices: Lista de vectores
Tensor: Lista de matrices

Saludos!!! tensor_bolivia:

Ejercicio 1 :

import numpy as np
import matplotlib.pyplot as plt

# 1. Crear un escalar 42

escalar = 42
print(escalar)

# 2. Crear un vector de 4 elementos

vector = np.array([2,3,5,7])
print(vector)

# 3. Crear una matriz de 3x2

matriz = np.array([[0,1],[2,3],[4,5]])
print(matriz)

# 4. Crear un tensor con la primera fila blanco, la segunda negro y la tercera gris

tensor = np.array([
    [[0,0,0],[0,0,0],[0,0,0]],
    [[255,255,255],[255,255,255],[255,255,255]],
    [[128,128,128],[128,128,128],[128,128,128]]
])

plt.imshow(tensor, interpolation='nearest')
plt.show()
tensor = np.array([
    [[255,255,255],[255,255,255],[255,255,255]],
    [[0,0,0],[0,0,0],[0,0,0]],
    [[128,128,128],[128,128,128],[128,128,128]]
])
plt.imshow(tensor, interpolation = 'nearest')
plt.show()

Hola! Les comparto algo que encontré mientras hacia mis notas.
Para hacer lo explicado mas gráfico, fui utilizando asignación de variables, de tal manera que se vea claramente que un tensor es una colección de matrices, una matriz es una colección de vectores, un vector es una colección de escalares y un escalar sería nuestra unidad mínima, peeeero al momento de querer graficarlo, me marcaba un error. Tuve que aplicar la función squeeze() a mi tensor para poder graficar como imagen sus valores.
Según revise, squeeze ‘limpia’ de espacios y/o basura, pero eso no me queda muy claro, pese que en la imagen, se aprecia claramente que hay un espacio doble entre matriz y matriz.

Luego, hice operaciones intermedias entre el vector, la matriz y el tensor para tener valores diferentes, para que la imagen fuera clara en las diferencias.
Estoy trabajando en un entorno local, les comparto captura de mi ejecución y el link en GitHub del script que utilice.

Saludos.
https://tuit.es/od0pQ

Práctica Escalar, vector, matriz y tensor:

Increíble todo lo que se aprende. A seguir el curso

tensor = np.array([
    [[255,255,255],[255,255,255],[255,255,255]],
    [[0,0,0],[0,0,0],[0,0,0]],
    [[128,128,128],[128,128,128],[128,128,128]]
])
plt.imshow(tensor, interpolation = "nearest")
plt.show()
tensor = np.array([
    [[14,24,34],[45,55,56],[67,68,79]],
    [[100,101,102],[103,104,105],[160,170,180]],
    [[190,200,210], [220,230,204], [255,227,238]]
])
print(tensor)
plt.imshow(tensor, interpolation='nearest')
plt.show()```

Buenas Tardes envio ejercicio propuesto por el profesor
escalar = 42
print(escalar)
print(type(escalar))
42
<class ‘int’>

vector = np.array([2,3,5,7])
print(vector)
[2 3 5 7]

matriz = np.array([[9,8,7],[6,5,4]])
print(matriz)
[[9 8 7]
[6 5 4]]

tensor = np.array ([
[[255,255,255],[255,255,255],[255,255,255]],
[[0,0,0],[0,0,0],[0,0,0]],
[[128,128,128],[128,128,128],[128,128,128]]

])
print(tensor)
[[[255 255 255]
[255 255 255]
[255 255 255]]

[[ 0 0 0]
[ 0 0 0]
[ 0 0 0]]

[[128 128 128]
[128 128 128]
[128 128 128]]]

plt.imshow(tensor, interpolation=‘nearest’)
plt.show()

  • Tensor: puede moverse entre las filas, las columnas y entre matrices.
  • Vector: puede moverse entre columnas y filas.
📝 Mi resumen de la clase: * **Escalar**: \- En matemáticas representa un número tal cual (0, 1, 2, 1.2546m etc.) \- En python, puede representar cualquier valor (int, float, string, etc.) * **Vector**: Conjunto de números, con un grado de libertad (una dimensión). Nos podemos mover en **una sola** dirección. * **Matriz**: Conjunto de números ó bien vectores apilados, con dos grados de libertad (dos dimensiones), nos podemos mover en dos direcciones. 💡 Podemos imaginarlo como una tabla, con filas y columnas. * **Tensor**: Tiene uno o más grados de libertad que una matriz. Se puede ver como multiples matrices. Nos podemos mover entre filas, columnas y matrices. > Vectores, matrices y tensores se diferencian entre si en los grados de libertar que tenemos para interactuar con ellos.
Miren lo que me salió: `tensor = np.array([[255,0,0],[255,255,255],[255,0,0]])` `tensor` ![](https://static.platzi.com/media/user_upload/image-3594dfc0-e21f-4bd4-a185-0f221b04f36b.jpg)
![](https://static.platzi.com/media/user_upload/image-10ca04b4-6d73-4fac-bf8c-60a1457892d7.jpg)

Vectores, matrices y tensores pueden representar cantidades, colores, ubicaciones, etc., dependiendo de quien genera tales datos y del contexto en que se utilizan

Si un escalar es un número: Un vector es un "lugar" donde se colocan muchos números (un grado de libertad): nos podemos mover sólo en dirección del vector. La matriz es un lugar donde se colocan muchos vectores apilados (dos grados de libertad): nos podemos mover en dirección de cada vector -horizontalmente- y en dirección de la pila de vectores -verticalmente-. El tensor es un lugar donde se colocan muchas matrices (uno o más grados de libertad que una matriz): nos podemos mover, además, entre matrices

Hola, Les comparto mi código: ![](https://static.platzi.com/media/user_upload/imagen-f8c30e96-7f26-43f5-9fa4-8207701c1f54.jpg) Les comparto el tensor de forma gráfica: ![](https://static.platzi.com/media/user_upload/Sin%20t%C3%ADtulo-6240946f-c953-48e0-bbfc-91e2d5b2a515.jpg)
Es poco, pero es humilde jaja ![](https://static.platzi.com/media/user_upload/image-8fa8e9ab-3a98-40a4-b96e-384c8b2fcb4b.jpg)

Aqui esta mi reto que dejo.
![](

![](

![](

"No podemos asumir que por encontrar los datos representen algo"
omitiendo las imágenes, lo difícil es ir al revés. Como sucede en la realidad.

Les quería compartir algo muy simple y cómo el tensor no es algo muy lejano a lo que conocemos. Esta imagen es producto de un tensor, donde básicamente tenemos una matriz que nos define los cuadros y dentro de ella tenemos vectores que son los que definen los colores por medio del RGB. ![](https://static.platzi.com/media/user_upload/60fcbb14-a4a1-46f6-a3c4-78aec55a1bac-83d5c698-0f9c-49c7-ba14-47e76aba4dcc.jpg) ![](blob:vscode-webview://1fc8gcdbcam594jg27nekc5tlpp1f226gdgrqbuklbmh2gpndivk/60fcbb14-a4a1-46f6-a3c4-78aec55a1bac)![](blob:vscode-webview://1fc8gcdbcam594jg27nekc5tlpp1f226gdgrqbuklbmh2gpndivk/60fcbb14-a4a1-46f6-a3c4-78aec55a1bac)plt.imshow(np.array(\[      \[\[0, 170,228],\[255,128,0],\[0, 170,228]],    \[\[255,128,0],\[255,181,82],\[255,128,0] ],    \[\[0,170,228],\[255,128,0],\[0,170,228] ],     \[\[0,170,228],\[45,87,44],\[0,170,228]],     \[\[0,170,228],\[45,87,44],\[45,87,44] ],     \[\[0,170,228],\[45,87,44],\[0,170,228]]    ]), )![]()```python import matplotlib.pyplot as plt plt.imshow(np.array([ [[0, 170,228],[255,128,0],[0, 170,228]], [[255,128,0],[255,181,82],[255,128,0] ], [[0,170,228],[255,128,0],[0,170,228] ], [[0,170,228],[45,87,44],[0,170,228]], [[0,170,228],[45,87,44],[45,87,44] ], [[0,170,228],[45,87,44],[0,170,228]] ]), ) ```
Les quería compartir algo muy simple y cómo el tensor no es algo muy lejano a lo que conocemos. Esta imagen es producto de un tensor, donde básicamente tenemos una matriz que nos define los cuadros y dentro de ella tenemos vectores que son los que definen los colores por medio del RGB. ```js import matplotlib.pyplot as plt plt.imshow(np.array([ [[0, 170,228],[255,128,0],[0, 170,228]], [[255,128,0],[255,181,82],[255,128,0] ], [[0,170,228],[255,128,0],[0,170,228] ], [[0,170,228],[45,87,44],[0,170,228]], [[0,170,228],[45,87,44],[45,87,44] ], [[0,170,228],[45,87,44],[0,170,228]] ]), ) ```plt.imshow(np.array(\[      \[\[0, 170,228],\[255,128,0],\[0, 170,228]],    \[\[255,128,0],\[255,181,82],\[255,128,0] ],    \[\[0,170,228],\[255,128,0],\[0,170,228] ],     \[\[0,170,228],\[45,87,44],\[0,170,228]],     \[\[0,170,228],\[45,87,44],\[45,87,44] ],     \[\[0,170,228],\[45,87,44],\[0,170,228]]    ]), ) ![](https://static.platzi.com/media/user_upload/image-aabab17f-7089-4e9c-8b70-957ecde09622.jpg)
👀👀
![](https://static.platzi.com/media/user_upload/image-25421a71-7667-4529-b426-f629f36a3a1a.jpg)
![](https://static.platzi.com/media/user_upload/image-8995e409-684c-480c-b029-60dc69dbc6d3.jpg)
![](https://static.platzi.com/media/user_upload/image-718c0e4b-b01b-4a2c-a655-add9b9c01ec1.jpg)

Ejercicio de la clase

Código:

tensor3 = np.array([
    [[255,255,255],[255,255,255]],
    [[128,128,128],[128,128,128]],
    [[0,0,0],[0,0,0]],
])
plt.imshow(tensor3,interpolation='nearest')
plt.show()

Me puse a jugar con los escalares y me salió este resultado:

  • Este es el código
tensor1 = np.array([
    [[0,0,0],[0,0,0],[0,0,0]],
    [[128,128,128],[128,128,128],[128,128,128]],
    [[255,255,255],[255,255,255],[255,255,255]],
])
plt.imshow(tensor1,interpolation='nearest')
plt.show()

Agregando el nombre de las variables asociadas a un vector se puede construir de manera más sencilla en cuestión de la visualización de nuestro código, dejo mi pequeño ejemplo en código.

import numpy as np
import matplotlib.pyplot as plt

# Define los colores de la bandera alemana en formato RGB
negro = [0, 0, 0]
rojo = [255, 0, 0]
amarillo = [255, 255, 0]

# Crea la matriz tensora de la bandera alemana
bandera_alemana = np.array([
    [negro, negro, negro],
    [rojo,rojo,rojo],
    [amarillo, amarillo, amarillo]
], dtype=np.uint8)  # dtype=np.uint8 se utiliza para asegurarse de que los valores estén en el rango de 0-255

# Muestra la bandera alemana
plt.imshow(bandera_alemana)
plt.axis('off')  # Para quitar los ejes
plt.show()

CADA pixel seria nuestro vector [R, G, B] ejemplo [128,128,128] un pixel gris

De escalares a Tensores:

Un escalar es un objeto cero-dimensional, en matemáticas son normalmente algún subconjunto de R o C. En python sin embargo y en ciencia de datos y AI son tambien cualquier objeto que represente un solo dato, una string, un boolean un int y por supuesto un float, este último seria el mas parecido a los usados en matemáticas. Conforme avanzamos en dimensionalidad, tenemos los vectores, objetos 1-dimensional que en python serian las listas o en pandas las series; Las matrices objetos 2 dimensional serian los arrays de array de numpy que se pueden convertir a su vez en la estructura de dataframes de pandas mediante una funcionalidad, Los tensores finalmente son todos los anteriores pero tambien objetos mas complejos de dimension superior, son usados en Mecánica cuantica, Relatividad y por supuesto en AI.

Respondiendo a la tarea:

escalar = 42
vector = np.array([2,3,5,7])
matriz = np.array([[1,2],[4,5],[7,8]])
tensor = np.array([[[255,255,255],[255,255,255],[255,255,255]],
                   [[128,128,128],[128,128,128],[128,128,128]],
                   [[0,0,0],[0,0,0],[0,0,0]]])
print(escalar)
print(vector)
print(matriz)
plt.imshow(tensor, interpolation='nearest')
plt.show()

En Python, podemos crear escalares, vectores y matrices utilizando diferentes librerías de álgebra lineal, como NumPy. Además, podemos crear tensores utilizando las mismas librerías, ya que los tensores son una generalización de escalares, vectores y matrices a espacios multidimensionales. Aquí te mostramos algunos ejemplos de cómo crear y operar con estos objetos en Python utilizando la librería NumPy:

Creación de escalares, vectores y matrices:

import numpy as np

# Creación de un escalar
escalar = np.array(5)

# Creación de un vector
vector = np.array([3, 4])

# Creación de una matriz
matriz = np.array([[1, 2], [3, 4]])

Operaciones con escalares, vectores y matrices:

import numpy as np

# Suma de escalares
a = np.array(5)
b = np.array(3)
suma = a + b  # resultado: 8

# Suma de vectores
v1 = np.array([1, 2])
v2 = np.array([3, 4])
suma_v = v1 + v2  # resultado: [4, 6]

# Multiplicación de matrices
m1 = np.array([[1, 2], [3, 4]])
m2 = np.array([[5, 6], [7, 8]])
mult_m = np.dot(m1, m2)  # resultado: [[19, 22], [43, 50]]

Creación de tensores:

import numpy as np

# Creación de un tensor de tres dimensiones
tensor = np.array([
  [[1, 2], [3, 4]],
  [[5, 6], [7, 8]]
])

# Acceso a un elemento del tensor
elem = tensor[0][1][0]  # resultado: 3

Operaciones con tensores:

import numpy as np

# Suma de tensores
t1 = np.array([
  [[1, 2], [3, 4]],
  [[5, 6], [7, 8]]
])
t2 = np.array([
  [[9, 10], [11, 12]],
  [[13, 14], [15, 16]]
])
suma_t = t1 + t2  # resultado: [[[10, 12], [14, 16]], [[18, 20], [22, 24]]]

# Producto de tensores
t3 = np.array([
  [[1, 2], [3, 4]],
  [[5, 6], [7, 8]]
])
t4 = np.array([
  [[9, 10], [11, 12]],
  [[13, 14], [15, 16]]
])
prod_t = np.dot(t3, t4)  # resultado: no se puede calcular el producto ya que los tensores no tienen las mismas dimensiones

Reto

<
tensor2 = np.array([
       [[233, 234, 235],
        [243, 244, 245],
        [253, 254, 255]],
    
       [[  0,   5,  10],
        [ 20,  25,  30],
        [ 40,  45,  50]],

       [[118, 119, 120],
        [127, 128, 129],
        [136, 137, 138]]
])

plt.imshow(tensor2, interpolation='nearest')
plt.show()
> 

Blanco, negro y gris:

tensor = np.array([
    [[255,255,255],[255,255,255],[255,255,255]],
    [[0,0,0],[0,0,0],[0,0,0]],
    [[128,128,128],[128,128,128],[128,128,128]]            
])
plt.imshow(tensor, interpolation='nearest')
plt.show()

Tarea:

Aqui mi aporte una carita feliz

dibujo = np.array([[[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255]],
                   [[255,255,255],[255,255,255],[255,51,51],[255,255,255],[255,255,255],[255,51,51],[255,255,255],[255,255,255]],
                   [[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255]],
                   [[255,255,255],[255,255,255],[255,255,255],[0,255,0],[255,255,255],[255,255,255],[255,255,255],[255,255,255]],
                   [[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255]],
                   [[255,255,255],[255,255,0],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,0],[255,255,255]],
                   [[255,255,255],[255,255,255],[255,255,0],[255,255,255],[255,255,255],[255,255,0],[255,255,255],[255,255,255]],
                   [[255,255,255],[255,255,255],[255,255,255],[255,255,0],[255,255,0],[255,255,255],[255,255,255],[255,255,255]],
                   [[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255]],
                   [[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255]]])

plt.imshow(dibujo, interpolation= 'nearest')
plt.show()


PERU DICE PRESENTE!!

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

R=[200,12,29]
W=[255,255,255]

tensor = np.array([

Parte de arriba

[R,R,R,R,R,R,R,R,R,W,W,W,W,W,W,W,W,W,R,R,R,R,R,R,R,R,R],
[R,R,R,R,R,R,R,R,R,W,W,W,W,W,W,W,W,W,R,R,R,R,R,R,R,R,R],
[R,R,R,R,R,R,R,R,R,W,W,W,W,W,W,W,W,W,R,R,R,R,R,R,R,R,R],
[R,R,R,R,R,R,R,R,R,W,W,W,W,W,W,W,W,W,R,R,R,R,R,R,R,R,R],

Parte de abajo

[R,R,R,R,R,R,R,R,R,W,W,W,W,W,W,W,W,W,R,R,R,R,R,R,R,R,R],
[R,R,R,R,R,R,R,R,R,W,W,W,W,W,W,W,W,W,R,R,R,R,R,R,R,R,R],
[R,R,R,R,R,R,R,R,R,W,W,W,W,W,W,W,W,W,R,R,R,R,R,R,R,R,R],
[R,R,R,R,R,R,R,R,R,W,W,W,W,W,W,W,W,W,R,R,R,R,R,R,R,R,R],

])

plt.imshow(tensor, interpolation=“nearest”)
plt.show()

Está el escalar, el vector, el tensor, la matriz
¿En qué se diferencia cada uno de ellos? En los grados de libertad que estamos teniendo al interactuar.

  • un vector es un conjunto de números
  • un escalar en matemática no es nada más ni nada menos que un número.

  • En python un escalar es algo completamente distinto, puede ser un entero, pude ser un punto flotante, pude ser un número complejo, pero puede ser un string, pero también puede ser un elemento nada (null type).

No me gusta harcodear matrices asi que hize esto:

tensor = np.array([np.uint8(np.ones((3, 3)) * 255 * x) for x in [1, 0, 0.5]])
plt.imshow(tensor, interpolation='nearest')
plt.colorbar()
plt.show()

sabiendo que cada matris en el vector interpreta una fila de la grafica recorro un array [1, 0, 0.5] blanco, negro gris entonces genero una matrix de 3x3 de 255 y lo multiplico por x que es un elemento de la lista [1, 0, 0.5] y me sale este resultado

[[[255 255 255]
  [255 255 255]
  [255 255 255]]

 [[  0   0   0]
  [  0   0   0]
  [  0   0   0]]

 [[127 127 127]
  [127 127 127]
  [127 127 127]]]

Un curso que ya está sacando lo mejor de mí:

terc_tensor = np.array([
    [[255,255,255],[255,255,255],[255,255,255]],
    [[0,0,0],[0,0,0],[0,0,0]],
    [[128,128,128],[128,128,128],[128,128,128]]
])

plt.imshow(terc_tensor, interpolation='nearest')

plt.show()

La bandera de mi pais

%matplotlib inline
import matplotlib.pyplot as plt

colores=[[255,255,0],[255,255,0],[0,0,255],[255,0,0]]
tensor=[]
for color in colores:
    section=[]
    for i in range(5):
        section.append(color)
    tensor.append(section)
    
plt.imshow(tensor, interpolation='nearest')
plt.show()

Mi aporte de la bandera Colombiana.

colores=[[255,255,0],[0,0,255],[255,0,0]]
tensor=[]
for color in colores:
    section=[]
    for i in range(5):
        section.append(color)
    tensor.append(section)
    
plt.imshow(tensor, interpolation='nearest')
plt.title('Colombian flag', fontsize=15, pad=20 )
plt.axis('off')
plt.show()

La bandera de mi pais!
output.png

tensor=np.array([
    [[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255]],
    [[255,255,255],[251,255,0],[251,255,0],[251,255,0],[255,255,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255]],
    [[255,255,255],[251,255,0],[251,255,0],[251,255,0],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255]],
    [[255,255,255],[251,255,0],[251,255,0],[251,255,0],[255,255,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255]],
    [[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255]],
    [[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255]],
    [[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255]],
    [[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255],[0,100,255]],
    [[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255]],
])
#1
a = 37
print(a)
print("\n")

#2
newVector = np.array([2,3,5,7])
print(newVector)
print("\n")

#3
newMatrix = np.array([["a","b","c"],["d","f","g"],["h","i","j"],["k","ñ","l"],["p","k","s"],["x","y","z"]])
print(newMatrix)
print("\n")

#4
newTensor = np.array([
    [[255,255,255],[255,255,255],[255,255,255]],
    [[0,0,0],[0,0,0],[0,0,0]],
    [[128,128,128],[128,128,128],[128,128,128]]
])
plt.imshow(newTensor, interpolation='nearest')
plt.show()

escalar: GL=0
vector: GL=1
matriz: GL=2
tensor: GL=3

import numpy as np

vector = np.array([1,2,3,4])
print(‘Vector:\n’, vector)

matriz = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(’\nMatriz:\n’, matriz)

tensor = np.array([
[[1,2,3], [7,8,9]],
[[1,2,3], [7,8,9]],
[[0,0,0], [255,255,255]],
[[0,0,0], [255,255,255]]
])
print(’\nMatriz:\n’, tensor)
Vector:
[1 2 3 4]

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

Matriz:
[[[ 1 2 3]
[ 7 8 9]]

[[ 1 2 3]
[ 7 8 9]]

[[ 0 0 0]
[255 255 255]]

[[ 0 0 0]
[255 255 255]]]
import matplotlib.pyplot as plt

plt.imshow(tensor, interpolation=‘nearest’)
plt.show()

#Reto
print("______________________")
escalar=42
print(escalar)

print("\n ")

print("Matriz ")

matriz=np.array([2,3,5,7])

print(matriz)

print("\n ")

print(" Matriz de 3x2 ")

matriz1=np.array([[2,3],[5,3],[7,4]])

print(matriz1)



tensor = np.array([
                   [[255,255,255],[255,255,255],[255,255,255]],
                       [[0,0,0],[0,0,0],[0,0,0]],
                   
    [[128,128,128],[128,128,128],[128,128,128]],

])


plt.imshow(tensor, interpolation='nearest')
plt.show()

· Un escalar es un tensor dimensional 0
· Un vector es un tensor unidimensional
· Una matriz es un tensor bidimensional
· Un nd-array es un tensor de n dimensiones

Mi aporte de la clase

Reto:

escalar = 42

vector = np.array([2,3,5,7])

matriz = np.array([[1, 2], [4, 0], [7, 2]])  #Matriz 3x2

tensor = np.array([
    [[255, 255, 255], [255, 255, 255], [255, 255, 255]],
    [[0, 0, 0], [0, 0, 0], [0, 0, 0]],
    [[140, 140, 140], [140, 140, 140], [140, 140, 140]]
])

Hola vengo del futuro, para que no se frustren con los conceptos de las clases posteriores que se vienen, vean este curso de algebra lineal en base a gráficas. Les va ayudar mucho y demasiado a entender todo este curso.
VIDEOS ALGEBRA LINEAL

import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt

#1
escalar = 46
print(escalar)

#2
vector = np.array([2, 3, 5, 7])
print(vector)

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

tensor = np.array([
                   [[255, 255, 255], [255, 255, 255], [255, 255, 255]],
                   [[0, 0, 0], [0, 0, 0], [0, 0, 0]],
                   [[128, 128, 128], [128, 128, 128], [128, 128, 128]],
                  ])
plt.imshow(tensor, interpolation = "nearest")
plt.show() 

Dejo mi tensor blanco, negro, gris:

❤️

Lo que me gustó bastante de este profesor es que a medida que va escribiendo los comandos coloca los import y explica el porqué a DIFERENCIA DEL RESTO que te pone TODOS LOS IMPORT al principio. Esto ayuda mucho a entender el PORQUÉ y no perderse con tooodas las funciones.

A=[0,0,205]
R=[200,12,29]
B=[255,255,255]

tensor = np.array([
    [A,A,A,A,A,A,A,A,A,A,A,A,A,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B],
    [A,A,A,A,A,A,B,A,A,A,A,A,A,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B],
    [A,A,A,A,A,B,B,B,A,A,A,A,A,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B],
    [A,A,A,A,B,B,B,B,B,A,A,A,A,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B],
    [A,B,B,B,B,B,B,B,B,B,B,B,A,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B],
    [A,A,A,B,B,B,B,B,B,B,A,A,A,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B],
    [A,A,A,A,B,B,B,B,B,A,A,A,A,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B],
    [A,A,A,A,B,B,A,B,B,A,A,A,A,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B],
    [A,A,A,B,B,A,A,A,B,B,A,A,A,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B],
    [A,A,A,B,A,A,A,A,A,B,A,A,A,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B],
    [A,A,A,A,A,A,A,A,A,A,A,A,A,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B],
    [R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R],
    [R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R],
    [R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R],
    [R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R],
    [R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R],
    [R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R],
    [R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R],
    [R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R],
    [R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R],
    [R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R],
    [R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R]
])

Un tensor hablando matemáticamente se puede considerar como una matriz que tiene por elementos otras matrices.

Solución ejercicio del final:
.

# importar las librerias
import numpy as np
import matplotlib.pyplot as plt

def run():
    escalar  = 42
    vector = np.array([1,3,5,7])
    matriz_3x2 = np.array([[1,2],[5,6],[1,2]])
    tensor = np.array([ [[255,255,255],[255,255,255],[255,255,255]],
                        [[0,0,0],[0,0,0],[0,0,0]],
                        [[128,128,128],[128,128,128],[128,128,128]]
                       ])

    print(escalar)
    print(vector)
    print(matriz_3x2)
    print(tensor)

    plt.imshow(tensor, interpolation = 'nearest')
    

if __name__ == '__main__':
  run()

La salida del código:

42
[1 3 5 7]
[[1 2]
 [5 6]
 [1 2]]
[[[255 255 255]
  [255 255 255]
  [255 255 255]]

 [[  0   0   0]
  [  0   0   0]
  [  0   0   0]]

 [[128 128 128]
  [128 128 128]
  [128 128 128]]]

Quería entender porque usábamos el modulo que usamos para la grafica y salí con informacion extra que me gustaría compartir :0


Creación de Jupyter
Fernando Pérez es un físico colombiano, graduado de la universidad de Antioquia, con un doctorado en fisica de partículas por la universidad de Colorado; en el 2012 ganó el premio de la Free Software Fundation por el avance del software libre, pues Fernando, desde el 2001 desarrolló el padre de Jupyter, IPython ese es (era) una forma de poder interactuar con python mediante un shell interactivo, el cual permitía resaltar líneas y desarrollar operaciones en paralelo pudiéndose estas desarrollar, ejecutar, depurar y ser monitoreadas interactivamente (por eso su nombre, Interactive Python) mediante un notebook en la web, el cual es un documento JSON que contiene una lista ordenada de entradas / salidas las cuales pueden tener código, texto, matemáticas, dibujos y rich media. pudiendo ser convertidos a otros formatos de archivos

En 2014 Fernando anuncia su nuevo proyecto, Jupyter, (dejando a Ipython como shell para Python y Kernell de Jupyter) cuyo nombre seria un homenaje a los cuadernos de Galileo Galilei; el cual es un proyecto de código abierto para la computación interactiva, cuyo objetivo es apoyar la ciencia de datos interactiva y la computación científica en todos los lenguajes de programación.
Jupyter Notebook es el hijo de IPython notebook, el cual es el software que estamos usando para este curso, el cual es un documento JSON en la web con las funcionalidades que ya presentaba IPython, sirviendo como programa de computo en la nube dada su filosofia, Jupyther ha sido usado en varios descubrimientos cientificos (destacando el de las ondas gravitacionales) incluso hay un articulo que habla que el futuro de los “paper” será en los notebooks


Ahora si, analicemos el ultimo pedazo de código

%matplotlib inline

Esto nos dice que el grafico que pongamos será incluido en el notebook, despues del código, será de uso obligatorio despues de importar matplotlib

plt.imshow(tensor, interpolation="nearest")

plt es el la llamada al modulo importado, y estaremos usando la extensión imshow muestra datos como una imagen de pseudocolor, es decir, en un ráster regular 2D.
Esta va acompañado de parámetros, les sugiero ver el link adjunto a la documentación

plt.show

Nos muestra la figura

Reto:

#Ejercicio escalar: 42, vector 2,3,5,7 matriz 3x2, graficar tensor 
#en su primer fila blanco segunda negro y tercera gris
esc = 42
vect = np.array([2,3,5,7])
matr = np.array([[1,2],[3,4],[5,6]])

tensor = np.array([
    [[255,255,255],[255,255,255],[255,255,255]],
    [[0,0,0],[0,0,0],[0,0,0]],
    [[128,128,128],[128,128,128],[128,128,128]],
])

print(esc)
print(vect)
print(matr)
plt.imshow(tensor,interpolation='nearest')
plt.show()

Aqui dejo los resultados que obtuve de lo que pidio el profe.
Escalar

esc = 42
print(esc)

42
Vector

vec = np.array([2, 3, 5, 7])
print(vec)

[2 3 5 7]
Matriz

mat = np.array([[1, 7], [3, 4], [2, 2]])
print(mat)

[[1 7]
[3 4]
[2 2]]
Tensor

negro = np.array([0, 0, 0])
gris = np.array([128, 128, 128])
blanco = np.array([255, 255, 255])

ten = np.array([[blanco, blanco, blanco], [negro, negro, negro], [gris, gris, gris]])
print(ten)
plt.imshow(ten, interpolation='nearest')
plt.show()

[[[255 255 255]
[255 255 255]
[255 255 255]]

[[ 0 0 0]
[ 0 0 0]
[ 0 0 0]]

[[128 128 128]
[128 128 128]
[128 128 128]]]

Este es el código para el reto que dejo el profesor

tensor_2 = np.array([
    [[255,255,255],[255,255,255],[255,255,255]],
    [[0,0,0],[0,0,0],[0,0,0]],
    [[128,128,128],[128,128,128],[128,128,128]]
])

Ademas recordando que cada vector es un color si por ejemplo cambiamos uno a
[[255,128,0]] estariamos generando el color naranja en uno de esos cuadros de nuestra matriz de tres por tres, tomando este concepto hice un tensor que hace los colores blanco, gris y negro pero esta vez de forma vertical

tensor_v = np.array([
    [[255,255,255],[128,128,128],[0,0,0]],
    [[255,255,255],[128,128,128],[0,0,0]],
    [[255,255,255],[128,128,128],[0,0,0]]
])

Hice una paleta que simula un circulo cromatico a traves del “Modelo aditivo RGB”:




Para que puedan experimentar:
\

#Crear un tensor de pruebas:
tensor_rgb = np.array([
    [[255,0,0],[255,0,255],[0,0,255]],
    [[255,255,0],[255,255,255],[0,255,255]],
    [[0,0,0],[0,255,0],[127,127,127]]
])
tensor_rgb

#Graficar nuestro tensor de pruebas:
plt.imshow(tensor_rgb, interpolation="nearest")
plt.show()