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']