Tengo un código matlab que estoy intentando traducir.en pitón. Soy nuevo en Python, pero he podido responder muchas preguntas en Google. Pero ahora, estoy tratando de averiguar lo siguiente: Tengo un bucle for cuando aplico cosas diferentes en cada columna, pero no sabes el número de columnas. Por ejemplo. En Matlab, nada más fácil que esto:
for n = 1:size(x,2); y(n) = mean(x(:,n)); end
Pero no tengo idea de cómo hacerlo en python cuando, por ejemplo, el número de columnas es 1, porque no puedo hacer t [:, 1] en python. ¿Alguna idea?
Gracias
Respuestas
1 para la respuesta № 1Tratar numpy
. Es un enlace de python para alto rendimiento.biblioteca matemática escrita en C. Creo que tiene los mismos conceptos de operaciones de división de matriz, y es significativamente más rápida que el mismo código escrito en python puro (en la mayoría de los casos).
Respecto a tu ejemplo, creo que lo más cercano sería algo usando numpy.mean
.
En python puro es difícil calcular la media de la columna, pero si puedes transponer la matriz, puedes hacerlo usando algo como esto:
# there are no builtin avg function
def avg(lst):
return sum(lst)/len(lst)
rows = list(avg(row) for row in a)
2 para la respuesta № 2
Sí, si usas numpy puedes usar x [:, 1], y también obtienes otras estructuras de datos (vectores en lugar de listas), la principal diferencia entre matlab y numpy es que matlab usa matrices para cálculos y numpy usa vectores, pero te acostumbras a ello, creo esta guía te ayudará
1 para la respuesta № 3
Esta es un forma de hacerlo
from numpy import *
x=matrix([[1,2,3],[2,3,4]])
[mean(x[:,n]) for n in range(shape(x)[1])]
# [1.5, 2.5, 3.5]