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)