2012-05-06 65 views
-1

直角座標系中具有不與高中以來笛卡爾圖的工作,其實我已經發現了有關現實生活需要他們。這可能是一個奇怪的需求,但我必須將數據分配給笛卡爾圖上的點,這可通過調用笛卡爾座標來訪問。圖表上需要有無限的點。例如。計算使用python

     ^
[-2-2,a ][ -1-2,f ][0-2,k ][1-2,p][2-2,u] 
[-2-1,b ][ -1-1,g ][0-1,l ][1-1,q][1-2,v] 
<[-2-0,c ][ -1-0,h ][0-0,m ][1-0,r][2-0,w]> 
[-2--1,d][-1--1,i ][0--1,n][1-1,s][2-1,x] 
[-2--2,e][-1--2,j ][0--2,o][1-2,t][2-2,y] 
         v 

的實際值並不重要。但是,假設我在變量m上,這將在笛卡爾圖上爲0-0。如果我向上移動一個空間,我需要計算笛卡爾座標,這將使我離開l。

從理論上講,說我有一個Python變量,==( 「0-1」),我認爲我需要將其在分割 - ,這會使X = 0,Y = 1。然後,我需要執行(int(y)+1),然後使用中間的' - '將x重新附加到y。

我想要做的就是調用帶有參數(x + 1,y + 0)的函數,並讓程序執行上述操作,然後返回它計算出的笛卡爾座標。

我實際上並不需要檢索的價值空間,只是笛卡爾座標。我想我可以利用re.sub(),但是我不知道如何正確地格式化這個函數來分割' - ',我也不知道如何正確執行計算。

我該怎麼做?

+1

究竟你在做什麼,並_why_?鑑於需要解釋的數量,回答者可能會感到困惑。 – Shep

回答

1

我不知道我完全理解這個問題,但我會建議使用列表的列表,以獲得二維結構。

然後查找一個特定的值你可以做coords[x-minX][y-minY]其中x,y是你想要的整數索引,minX和minY是最小值(在你的例子中是-2)。

您可能還想看看NumPy,它提供了一種非常靈活的n-dim對象數組類型,使您可以「切分」每個軸或獲取子範圍。 NumPy文檔可能會對您有幫助,如果您是新手來處理像這樣的數組。

編輯: 要像0-1一個字符串分割成構成整數你可以使用:

s = '0-1' 
[int(x) for x in s.split('-')] 
+0

感謝大家,我設法使用這個回答者的分裂功能來使它工作。謝謝 ! :) – abkai

2

爲了表示無限點陣,使用哪個映射元組的字典(X,Y),以數值。

grid[(0,0)] = m 
grid[(0,1)] = l 

print(grid[(0,0)]) 
0

你要創建的變量名稱和座標之間的雙向映射,那麼你可以通過查找座標變量名稱,將你的函數應用到它,然後使用函數產生的新座標集找到下一個變量。數字元組之間

映射你可以申請你的函數和字符串可用作鍵在一個字典,背,很容易。