3
私はペアワイズ距離と自分のデータ(X、Y、Z)の残差を計算するコードを持っています。データはかなり大きく(平均7000行)、私の興味はコード効率です。私の最初のコードはこれを下回ることは非常に良い作品、私は次のようにそれを変更し、pwdistance
でペアワイズ距離と残差計算の最適化
import tkinter as tk
from tkinter import filedialog
import pandas as pd
import, numpy as np
from scipy.spatial.distance import pdist, squareform
root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename()
data = pd.read_excel(file_path)
data = np.array(data, dtype=np.float)
npoints, cols = data.shape
pwdistance = np.zeros((npoints, npoints))
pwresidual = np.zeros((npoints, npoints))
for i in range(npoints):
for j in range(npoints):
pwdistance[i][j] = np.sqrt((data[:,0][i]-data[:,0][j])**2 + (data[:,1][i]-data[:,1][j])**2)
pwresidual[i][j] = (data[:,2][i]-data[:,2][j])**2
です。
pwdistance = squareform(pdist(data[:,:2]))
私pwresidual
を計算するニシキヘビの方法はありますので、私はループを使用し、より高速に実行するために自分のコードを有効にする必要はありませんか?
あなたが代わりに 'np.sqrt'と' **の 'np.hypot'を使用することができ2' –
@FranciscoCouzo OPは '' pwresidual'を取得/最適化するよう求めているようです。私はそれもあまりにも初めて混乱した:) – Divakar
@Divakarそれは私が答えの代わりにコメントを作った理由です:) –