Meu código calcula a distância euclidiana entre todos os pontos em um conjunto de amostras que eu tenho. O que eu quero saber é, em geral, desta forma o mais eficiente para realizar alguma operação entre todos os elementos em um conjunto e, em seguida, traçar-lhes, por exemplo, para fazer uma matriz de correlação.
O índice de amostras é usado para inicializar a trama de dados e fornecer etiquetas. Em seguida, as coordenadas 3D são fornecidos como tuplos em three_D_coordinate_tuple_list mas este poderia facilmente ser qualquer medição e, em seguida, a distância variável pode ser qualquer operação. Estou curioso sobre encontrar uma solução mais eficiente para fazer cada coluna e, em seguida, fundi-las novamente usando pandas ou numpy. Estou entupimento qualquer memória com a minha solução? Como posso fazer isso mais limpo?
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