好了,所以我有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