2013-07-24 60 views
1

任何人都可以幫助我 - 是否有任何方式來創建像這樣的numpy數組座標網格?創建和使用座標網格

(0,0) (0,1) (0,2) ... (0,n) 
(1,0) (1,1) (1,2) ... (1,n) 
........................... 
(m,0) (m,1) (m,2) ... (m,n) 

如果是的話,我怎樣才能找到從每個點到中心在(m/2,n/2)和半徑R的圓的距離?

(x - m/2)^2 + (y - n/2)^2 - R^2 = ? 
+0

你可以查看http://stackoverflow.com/questions/17663393瞭解相似的例子。 – Daniel

+0

好點,這兩個問題非常相似。 – IanH

回答

4

這樣做的標準方法是使用meshgrid函數。它使兩個數組與您想要的點的座標爲xy。要在你的問題得到顯示的座標,你可以做

import numpy as np 
x = np.arange(m+1) 
y = np.arange(n+1) 
X, Y = np.meshgrid(x, y) 

然後計算出你願意,你可以做

np.sqrt((X - m/2.)**2 + (Y - n/2.)**2) - R 

欲瞭解更多信息的距離上meshgrid看到的文檔 http://docs.scipy.org/doc/numpy/reference/generated/numpy.meshgrid.html

而且如果您希望在兩個端點之間使用均勻間隔的值而不是0m0n,考慮使用linspace函數。

+1

由於它看起來像OP是新的numpy,我想添加如何實際獲得座標。如果讓'idx = np.sqrt((X - m/2。)** 2 +(Y - n/2。)** 2 - R ** 2)','idx'現在是一個True/False的值與'X'的大小相同。因此'X [idx]'和'Y [idx]'只返回圓圈中的座標。 – Hooked

+0

謝謝,這幫助我注意到瞭解決方案中的一個錯字,我只是修復了它。我想你的意思是設置'idx =((X - m/2。)** 2 +(Y - n/2。)** 2) IanH