pandalar içinde birleştirme sütunları daha etkili yolu

oy
0

Kodum Ben örneklerin kümesi tüm noktalar arasındaki Öklides mesafeyi hesaplar. Ne bilmek istiyorum genelde bir korelasyon matrisi yapmak örneğin bunları çizmek ardından grubundaki tüm elemanları arasında bazı işlemi gerçekleştirmek ve bu en etkili yoludur.

Numunelerin endeks dataframe başlatmak ve etiketleri sağlamak için kullanılır. Daha sonra 3 boyutlu koordinatları three_D_coordinate_tuple_list içinde dizilerini olarak verilmiştir ama bu kolayca herhangi bir ölçüm olabilir ve daha sonra değişken bir mesafe herhangi bir işlem olabilir. Onları tekrar birleştirme pandalar veya numpy kullanarak daha sonra her sütun yapmaya daha etkili bir çözüm bulma ve merak ediyorum. Benim çözüm ile herhangi bellek tıkanma muyum? Nasıl bu süpürgeyi yapabilir?

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
Oluştur 13/01/2020 saat 22:05
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
2

Kurmak

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.        ]])

Dizi

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])

Biz kare formu ile içine yapabilir Hangi 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.        ]])
Cevap 13/01/2020 saat 22:29
kaynak kullanıcı

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