Ejercicio: 2Eva_IIT2018_T2 Hielo y especies en Ártico-Procesar
Se añade las instrucciones al tema anterior,
Se incluyen las funciones que se asume como existentes para prueba de programa. En caso de problemas o dudas con el conteo, elaborar una función contar.
# CCPG1001-Fundamentos de programación FIEC-ESPOL # 2Eva_IIT2018_T2 Hielo y especies en Ártico-Procesar import numpy as np # ----- NUMERAL 2 ----- # Funciones que suponen que existen: def cuadrantes(matriz): tamano = np.shape(matriz) n = tamano[0] m = tamano[1] mitadfila = n//2 mitadcolumna = m//2 Q1 = matriz[0:mitadfila,0:mitadcolumna] Q2 = matriz[0:mitadfila,mitadcolumna:] Q3 = matriz[mitadfila:,0:mitadcolumna] Q4 = matriz[mitadfila:,mitadcolumna:] Q = np.array([Q1,Q2,Q3,Q4]) return(Q) def poblacionEspecie(mAnimales, especie): Q = cuadrantes(mAnimales) # pQ1 = np.count_nonzero(Q[0],especie) # np.count_nonzero no hay en funciones referencia # no en cheatsheet “Cheat Sheet” # se procede con algoritmo básico k = len(Q) poblacion = np.zeros(k,dtype=int) for i in range(0,k,1): unaQ = Q[i] tamano = np.shape(unaQ) n = tamano[0] m = tamano[1] for f in range(0,n,1): for c in range(0,m,1): if (unaQ[f,c] == especie): poblacion[i] = poblacion[i] +1 return(poblacion) # otra forma es usar una funcion contar en arreglo def contarenarreglo(arreglo,cual): tamano = np.shape(arreglo) n = tamano[0] m = tamano[1] contar = 0 for f in range(0,n,1): for c in range(0,m,1): if (arreglo[f,c] == cual): contar = contar+1 return(contar)
Desarrollo del numeral 2:
# CCPG1001-Fundamentos de programación FIEC-ESPOL # 2Eva_IIT2018_T2 Hielo y especies en Ártico-Procesar import numpy as np # funcion numeral 2 def densidadHielo(mHielo): Q = cuadrantes(mHielo) k = len(Q) densidad = np.zeros(k,dtype=float) for i in range(0,k,1): unaQ = Q[i] tamano = np.shape(unaQ) n = tamano[0] m = tamano[1] densidad[i]=np.sum(unaQ)/(n*m) return(densidad)
desarrollo del numeral 3:
# CCPG1001-Fundamentos de programación FIEC-ESPOL # 2Eva_IIT2018_T2 Hielo y especies en Ártico-Procesar import numpy as np # ----- NUMERAL 3 ----- def especieDominante(mAnimales): especies = np.unique(mAnimales) ke = len(especies) Q = cuadrantes(mAnimales) k = len(Q) dominante = np.zeros(k,dtype=int) for i in range(0,k,1): unaQ = Q[i] cuantos = np.zeros(ke,dtype=int) for j in range(0,ke,1): # solución semejante al NUMERAL 2 # para poblacionEspecie animal = especies[j] cuantos[j] = contarenarreglo(unaQ,animal) mayoria = np.argmax(cuantos) dominante[i]= especies[mayoria] return(dominante)
desarrollo del numeral 4
# CCPG1001-Fundamentos de programación FIEC-ESPOL # 2Eva_IIT2018_T2 Hielo y especies en Ártico-Procesar import numpy as np # ----- NUMERAL 4 ----- def migracionEspecie(mAnimales2009, mAnimales2019, especie): Q = cuadrantes(mAnimales2009) k = len(Q) cuantos = np.zeros(k,dtype=int) for i in range(0,k,1): unaQ = Q[i] cuantos[i] = contarenarreglo(unaQ,especie) mayoria09 = np.argmax(cuantos) Q = cuadrantes(mAnimales2019) k = len(Q) cuantos = np.zeros(k,dtype=int) for i in range(0,k,1): unaQ = Q[i] cuantos[i] = contarenarreglo(unaQ,especie) mayoria19 = np.argmax(cuantos) # considere numeración desde 0 a = 'Q'+str(mayoria09+1) b = 'Q'+str(mayoria19+1) migraron =[a,b] return(migraron)
Programa de prueba, incluye las partes del tema anterior
# CCPG1001-Fundamentos de programación FIEC-ESPOL # 2Eva_IIT2018_T2 Hielo y especies en Ártico-Procesar import numpy as np # PROGRAMA DE PRUEBA # INGRESO narchivo = 'artico2009-2019.txt' especie = 4 # PROCEDIMIENTO # ----- NUMERAL 1 ----- matrices = crearMatriz(narchivo) mhielo09 = matrices[0] mhielo19 = matrices[1] manimales09 = matrices[2] manimales19 = matrices[3] # ----- NUMERAL 2 ----- Q = cuadrantes(manimales09) poblacion = poblacionEspecie(manimales09, especie) densidad = densidadHielo(mhielo09) # ----- NUMERAL 3 ----- dominante = especieDominante(manimales09) # ----- NUMERAL 4 ----- migraron = migracionEspecie(manimales09, manimales19, especie) # SALIDA print(' ----- NUMERAL 1 ----- ') print('hielo 2009') print(mhielo09) print('hielo 2019') print(mhielo19) print('animales 2009') print(manimales09) print('animales 2019') print(manimales19) print(' ----- NUMERAL 2 ----- ') print('cuadrantes de manimales09') print(Q) print('población por cuadrantes de manimales09') print('para especie = 4') print(poblacion) print('densidad de hielo para mhielo09') print(densidad) print(' ----- NUMERAL 3 ----- ') print('dominantes en manimales09') print(dominante) print(' ----- NUMERAL 4 ----- ') print('migraron de la especie: ',especie) print(migraron)
Los resultados obtenidos son:
animales 2009 [[ 1 2 4 4] [ 2 5 5 3] [ 1 3 9 1] [ 1 1 4 2] [ 4 22 4 7] [ 1 1 4 0]] ----- NUMERAL 2 ----- cuadrantes de manimales09 [[[ 1 2] [ 2 5] [ 1 3]] [[ 4 4] [ 5 3] [ 9 1]] [[ 1 1] [ 4 22] [ 1 1]] [[ 4 2] [ 4 7] [ 4 0]]] población por cuadrantes de manimales09 para especie = 4 [0 2 1 3] densidad de hielo para mhielo09 [0.5 0.66666667 0.83333333 0.5 ] ----- NUMERAL 3 ----- dominantes en manimales09 [1 4 1 4] ----- NUMERAL 4 ----- migraron de la especie: 4 ['Q4', 'Q2']