UNIDAD 4-PROGRAMAS HECHOS DESDE CERO

Imagen
#PROGRAMA QUE PIDE EL NOMBRE DE UNA PERSONA Y LA SALUDA. from Tkinter import * from tkMessageBox import * ventana=Tk() ventana.geometry("300x300") ventana.title('Hola.........') nombre= StringVar() nombre.set('') dato=Entry(ventana,textvariable=str(nombre)).place(x=100,y=100) button=Button(ventana,text='hola',command=lambda:showinfo(title='hola', message='hola '+ nombre.get())).place(x=100,y=150) ventana.mainloop() ejecucion del programa: #Programa que abre el explorador de archivos y copia la ruta y la muestra en un Entry. from Tkinter import * from PIL import * from tkFileDialog import askopenfilename ventana=Tk() ventana.geometry('450x300') def llamada(): hey = StringVar() nombre = askopenfilename() print nombre hey.set(nombre) label = Entry(ventana, textvariable=hey,width=50).place(x=100, y=100) nombre=Label(ventana,text='pulse el boton y elija una ruta').place(x=10,y=10) label=

Utlizacion de los Arrays y Listas en Python

Utlizacion de los Arrays y Listas en Python

He leído constantemente que python es un lenguaje muy poderoso con el cual se puede hacer prácticamente lo que uno desee. Recientemente, me adentré en su mundo tratando de programar algunas aplicaciones para GRASS, sin embargo, esa “zambullida” fue prácticamente sin conocer muchos detalles del lenguaje y eso me ha traído algunos problemas. Por esta razón me propuse identificar algunos aspectos que tenía que aprender mejor y ese correspondía al de arrays y matrices.
Para sistematizar las operaciones que se pueden lograr con éstos se cuenta con el módulo numpy. Como también es tedioso el hecho de tener que digitar en cónsola los arreglos y matrices, especialmente cuando estos son muy grandes, me propuse a averiguar como se puede realizar esta tarea de manera expedita. Para ello, decidí crear un archivo de texto plano (archivo2) que contiene dos matrices de 3×3 (la primera es real simétrica porque se sabe que su inversa está definida) con la siguiente configuración:

1 2 3
2 1 4
3 4 1
1 2 3
4 5 6
7 8 9
Para leer ese archivo e imprimirlo por pantalla tendríamos suficiente con:
#! /usr/bin/env python
 
pfile=open('archivo2','r')
 
data=pfile.read()
 
pfile.close()
 
print data
y es simplemente texto. Con el código siguiente ya se imprime con un formato de array:
#! /usr/bin/env python
 
#Librerias
import numpy as np
from StringIO import StringIO 
 
pfile=open('archivo2','r')
 
data=pfile.read()
 
pfile.close()
 
data=np.genfromtxt(StringIO(data)) #Se sobre entiende que los 
                                   #delimitadores son espacios
 
print data
donde la salida es la siguiente:
[[ 1.  2.  3.]
 [ 2.  1.  4.]
 [ 3.  4.  1.]
 [ 1.  2.  3.]
 [ 4.  5.  6.]
 [ 7.  8.  9.]]
Para individualizar las matrices y “multiplicarlas”:
#! /usr/bin/env python
 
#Librerias
import numpy as np
from StringIO import StringIO 
 
pfile=open('archivo2','r')
 
data=pfile.read()
 
pfile.close()
 
data=np.genfromtxt(StringIO(data)) #Se sobre entiende que los 
                                   #delimitadores son espacios
 
 
matriz1 = data[0:3]
matriz2 = data[3:6]
 
matriz3 = matriz1 * matriz2
 
print matriz3
se tiene que la salida es la siguiente:
[[  1.   4.   9.]
 [  8.   5.  24.]
 [ 21.  32.   9.]]
Sin embargo, esta salida no corresponde a una multiplicación de matrices propiamente dicha porque, hasta ahora, genfromtxt lo que hizo fue simplemente transformar el texto en un array de arrays. Para transformar en matriz y obtener el resultado esperado hay que incluir una instrucción adicional:
#! /usr/bin/env python
 
#Librerias
import numpy as np
from StringIO import StringIO 
 
pfile=open('archivo2','r')
 
data=pfile.read()
 
pfile.close()
 
data=np.genfromtxt(StringIO(data)) #Se sobre entiende que los 
                                   #delimitadores son espacios
 
data=np.matrix(data) #Transformar array de arrays en matriz
 
matriz1 = data[0:3]
matriz2 = data[3:6]
 
matriz3 = matriz1 * matriz2
 
print matriz3
donde ahora la salida si es la esperada para una multiplicación de matrices:
[[ 30.  36.  42.]
 [ 34.  41.  48.]
 [ 26.  34.  42.]]
Por otra parte, si se quiere determinar, por ejemplo, la inversa de una matriz entonces hay que importar el módulo linalg de scipy. El código sería el siguiente:
#! /usr/bin/env python
 
#Librerias
import numpy as np
from StringIO import StringIO 
from scipy.linalg import *
 
pfile=open('archivo2','r')
 
data=pfile.read()
 
pfile.close()
 
data=np.genfromtxt(StringIO(data)) #Se sobre entiende que los 
                                   #delimitadores son espacios
 
#data=np.matrix(data) #Transformar array de arrays en matriz
 
matriz1 = data[0:3]
matriz2 = data[3:6]
 
matriz3 = matriz1 * matriz2
 
matriz4=inv(matriz1) #inv determina la inversa
 
print matriz4 #matriz inversa de matriz1
cuya salida para la inversa es:
[[-0.75  0.5   0.25]
 [ 0.5  -0.4   0.1 ]
 [ 0.25  0.1  -0.15]]
Con estos conocimientos básicos de manejo de arrays y matrices la parte que se detalla del script .

Comentarios

Entradas más populares de este blog

Modulos de Python

1.2 Dispositivos de hardware y software para el despliegue gráfico.

ejercicios del dia 06-11-18(ejercicios de ventanas,showinfo....)