पांडा में मर्ज स्तंभों को अधिक कारगर तरीका

वोट
0

मेरे कोड नमूने मैं का एक सेट में सभी बिंदुओं के बीच इयूक्लिडियन दूरी की गणना करता है। क्या मैं जानना चाहता हूँ सामान्य रूप में यह सबसे कारगर तरीका एक सेट में सभी तत्वों के बीच कुछ कार्रवाई करने के लिए और फिर एक संबंध मैट्रिक्स बनाने के लिए, उन्हें साजिश उदाहरण के लिए करना है।

नमूने के सूचकांक dataframe प्रारंभ और लेबल प्रदान करने के लिए प्रयोग किया जाता है। फिर 3 डी निर्देशांक three_D_coordinate_tuple_list में tuples के रूप में प्रदान की जाती हैं, लेकिन यह आसानी से किसी भी माप हो सकता है और उसके बाद चर दूरी किसी भी आपरेशन हो सकता है। मैं प्रत्येक स्तंभ बनाने के लिए एक अधिक कुशल समाधान ढूँढने और फिर उन्हें दोबारा विलय पांडा या numpy उपयोग के बारे में उत्सुक हूँ। मैं अपने समाधान के साथ किसी भी स्मृति को अवरुद्ध कर रहा हूं? मैं इस क्लीनर कैसे बना सकते हैं?

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
14/01/2020 को 00:05
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
2

सेट अप

import numpy as np

x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

scipy.spatial.distance_matrix

from scipy.spatial import distance_matrix

distance_matrix(x, x)

array([[ 0.        ,  5.19615242, 10.39230485],
       [ 5.19615242,  0.        ,  5.19615242],
       [10.39230485,  5.19615242,  0.        ]])

Numpy

from scipy.spatial.distance import squareform

i, j = np.triu_indices(len(x), 1)
((x[i] - x[j]) ** 2).sum(-1) ** .5

array([ 5.19615242, 10.39230485,  5.19615242])

जो हम साथ एक वर्ग के रूप में कर सकते हैं squareform

squareform(((x[i] - x[j]) ** 2).sum(-1) ** .5)

array([[ 0.        ,  5.19615242, 10.39230485],
       [ 5.19615242,  0.        ,  5.19615242],
       [10.39230485,  5.19615242,  0.        ]])
14/01/2020 को 00:29
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more