Saltar al contenido

Cómo normalizar un numpy bidimensional array en python menos detallado?

Luego de tanto luchar hemos hallado el arreglo de esta obstáculo que agunos lectores de este sitio han tenido. Si tienes algún detalle que compartir puedes aportar tu comentario.

Solución:

La transmisión es realmente buena para esto:

row_sums = a.sum(axis=1)
new_matrix = a / row_sums[:, numpy.newaxis]

row_sums[:, numpy.newaxis] cambia la forma de row_sums de ser (3,) de ser (3, 1). Cuando tu lo hagas a / b, a y b se transmiten unos contra otros.

Puedes aprender más sobre radiodifusiónaquí o mejor aquí.

Scikit-learn ofrece una función normalize() que le permite aplicar varias normalizaciones. El “hacer que sume 1” se llama norma L1. Por lo tanto:

from sklearn.preprocessing import normalize

matrix = numpy.arange(0,27,3).reshape(3,3).astype(numpy.float64)
# array([[  0.,   3.,   6.],
#        [  9.,  12.,  15.],
#        [ 18.,  21.,  24.]])

normed_matrix = normalize(matrix, axis=1, norm='l1')
# [[ 0.          0.33333333  0.66666667]
#  [ 0.25        0.33333333  0.41666667]
#  [ 0.28571429  0.33333333  0.38095238]]

Ahora tus filas sumarán 1.

Creo que esto debería funcionar,

a = numpy.arange(0,27.,3).reshape(3,3)

a /=  a.sum(axis=1)[:,numpy.newaxis]

Reseñas y calificaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *