estoy binning una matriz 2D (x por y) en Python en los contenedores de su valor x (dado en "contenedores"), utilizando np.digitize:enfoque vectorizada a binning con numpy/scipy en Python
elements_to_bins = digitize(vals, bins)
donde "Vals" es una matriz 2D, es decir:
vals = array([[1, v1], [2, v2], ...]).
elements_to_bins sólo dice lo bin cada elemento cae en. Lo que quiero hacer es obtener una lista cuya longitud es la cantidad de contenedores en "contenedores", y cada elemento devuelve la dimensión y de "vals" que cae en ese contenedor. Lo hago de esta manera en este momento:
points_by_bins = []
for curr_bin in range(min(elements_to_bins), max(elements_to_bins) + 1):
curr_indx = where(elements_to_bins == curr_bin)[0]
curr_bin_vals = vals[:, curr_indx]
points_by_bins.append(curr_bin_vals)
¿Hay alguna manera más elegante/más simple de hacer esto? Todo lo que necesito es una lista de las listas de valores y que caen en cada contenedor.
gracias.
¡Si una de las respuestas resolvió su problema, márquelo como aceptado (marca de verificación verde)! :) – EOL