Mi código calcula la distancia euclídea entre todos los puntos en un conjunto de muestras que tengo. Lo que yo quiero saber es, en general, de esta manera el más eficiente para llevar a cabo alguna operación entre todos los elementos de un conjunto y luego trazar ellos, por ejemplo, para hacer una matriz de correlación.
El índice de muestras se utiliza para inicializar la trama de datos y proporcionar etiquetas. A continuación, las coordenadas 3D se proporcionan como tuplas en three_D_coordinate_tuple_list pero esto podría fácilmente ser cualquier medición y entonces la distancia variable podría ser cualquier operación. Tengo curiosidad por encontrar una solución más eficiente para lograr cada columna y luego fusionarlos de nuevo utilizando el panda o numpy. Estoy obstruyendo cualquier memoria con mi solución? ¿Cómo puedo hacer que este limpiador?
def euclidean_distance_matrix_maker(three_D_coordinate_tuple_list, index_of_samples):
#list of tuples
#well_id or index as series or list
n=len(three_D_coordinate_tuple_list)
distance_matrix_df=pd.DataFrame(index_of_samples)
for i in range(0, n):
column=[]
#iterates through all elemetns calculates distance vs this element
for j in range(0, n):
distance=euclidean_dist_threeD_for_tuples( three_D_coordinate_tuple_list[i],
three_D_coordinate_tuple_list[j])
column.append(distance)
#adds euclidean distance to a list which overwrites old data frame then
#is appeneded with concat column wise to output matrix
new_column=pd.DataFrame(column)
distance_matrix_df=pd.concat([distance_matrix_df, new_column], axis=1)
distance_matrix_df=distance_matrix_df.set_index(distance_matrix_df.iloc[:,0])
distance_matrix_df=distance_matrix_df.iloc[:,1:]
distance_matrix_df.columns=distance_matrix_df.index