0
我有一個numpy的陣列DAT保持X/Y其中繪製以後值:numpy的數據點區域/圈
[
[1 2 3 4 5]
[2 4 6 8 10]
]
DAT [0]保持x值, DAT 1包含相應的y-alues。
現在我想知道哪些數據點具有特定範圍(例如5), 中的鄰居,所以我做了以下例如。爲0點(X = 1,Y = 2):
numpy.where(
(dat[0] > dat[0][0] - 5)
&
(dat[0] < dat[0][0] + 5)
&
(dat[1] > dat[1][0] - 5)
&
(dat[1] < dat[1][0] + 5)
)
這工作,但在指定的範圍/區域是10×10大小的平方,我想有 一個圓。
我的下一個嘗試是過濾數據與點之間的矢量(其中矢量長度必須小於5),它可以很好地處理兩點,但我無法弄清楚正確的numpy.where語句。
兩點很簡單:
math.sqrt((x_p1 - x_p2)**2 + (y_p1 - y_p2)**2) < 5
但如何相當於numpy.where會是什麼樣子? 我想在整個陣列上執行此操作,而不是一次又一次地只執行兩個點。
爲了形象,希望澄清問題:
P1是一個點出我的數據,我想所有的綠色點,這是在5半徑的圓圈,應該過濾紅點。
上述解決方案的矢量長度只能實現這兩點,我希望這個工作在整個數組,以便我可以for-loop與numpy.where獲取所有鄰居< 5爲每個點陣列。
我認爲你應該查看更多[numpy的布爾索引](http://docs.scipy.org/doc/numpy/user/basics.indexing.html),而不是使用'np.where'。也許[pandas-finding-points-within-maximum-distance](https://stackoverflow.com/questions/26825710/pandas-finding-points-within-maximum-distance/26871198#26871198)也是有幫助的。 – 2014-12-04 19:58:52
另請參閱numpy如何與數組進行數學運算 - 那些x和y點可以是數組(使用'np.sqrt'而不是'math.sqrt'!)。另外請注意,python列表和numpy數組並不是一回事。 – Ajean 2014-12-04 20:57:40