好了,所以我有XY的表座標這樣一羣不同點:通過表來計算分離循環 - 的Python
ID X Y 1 403.294 111.401 2 1771.424 62.183 3 804.812 71.674 4 2066.54 43.456 5 2208.55 40.907
的每一行代表與它的ID,X的對象,和Y列。實際上,我的桌子包含大約1345行。我想要做的是循環遍歷每一行,並計算該對象與表中所有其他對象的分離,我將最終使用該對象創建直方圖。我至今是:
sep_dat = np.zeros(shape=(5,5)) #create array for writing into
dat = np.loadtxt('SEA_mini_test.tab') #table of data
IDs = dat[:,0]
X_dat = dat[:,1]
X_dat = np.sort(X_dat)
Y_dat = dat[:,2]
Y_dat = np.sort(Y_dat)
for i, x, y in zip(xrange(len(X_dat)), X_dat, Y_dat):
sep_dat[i] = math.sqrt((x-X_dat)**2+(y-Y_dat)**2)
np.savetxt('SEA_mini_seps.dat', sep_dat, fmt='%10.9f')
但我還沒有得到它成功運行。我得到的最後一個錯誤是:
TypeError: only length-1 arrays can be converted to Python scalars
那麼我怎樣才能得到這個正常運行?
我怎麼能讓它在進行計算時忽略它本身?就像對象1(第1行)一樣,我不希望它計算與它本身的分離。我嘗試在zip中添加ID並在for循環中添加一個if語句,然後像if id != id:
那樣計算,但這不起作用。有沒有人對我如何做到這一點有一個想法?
而我的另一個問題是,我怎麼能把所有的數據寫入一個扁平數組?現在,我已經創建了一個空數組,它用計算值寫出來,但最終我得到了一個(5,5)數組。但我想要一個(5,1),以便我可以將它繪製爲直方圖。有任何想法嗎?
你爲什麼要單獨排序x和y? 你如何定義分離 - 與質心的距離? –
你是什麼意思?分離只是sqrt(dx^2 + dy^2)。我只是試圖計算一個物體與所有其他物體的物理分離。 – Courtney