我有以下ndarray:如何根據兩個where子句訪問2d數組的元素?
[[ 3 271]
[ 4 271]
[375 271]
[ 3 216]
[375 216]
[ 0 0]
[ 0 546]
[378 546]
[378 0]
[ 1 182]
[ 2 181]
[376 181]
[377 182]
[377 544]
[376 545]]
本質上一堆的X,Y座標/分。我希望能夠選擇兩個軸上給定點附近的X,Y座標。例如,給定目標點[3,271],我首先在此Y位置(271)檢索所有其他點,然後可以選擇X軸上的行 -/+ 3。針對上述情況,應該產生:
index_on_y = points[:,1] == point[1]
shared_y = points[index_on_y]
這將返回:
[ 3 271]
[ 4 271]
我儘量讓具有相同Y值這樣所有的行得到
shared_y:
[[ 3 271]
[ 4 271]
[375 271]]
現在如何選擇這個數組中的所有行,X值(列0)可以是0-6之間的任何值?我已經嘗試了切片/索引/ np.where的各種組合,但是我一直無法獲得所需的結果。下面是我得到的,但我知道這是不正確的;只是不知道正確的東西(和最有效的),這樣做將是這樣:
def nearby_contour_points_x(self, point, points, radius):
index_on_y = points[:,1] == point[1] # correct
shared_y = points[index_on_y] # correct
x_vals = shared_y[:,0] # not good?
index_on_x = np.where(np.logical_or(x_vals <= (point[0] - radius), x_vals <= (point[0] + radius)))
return shared_y[index_on_x]
理想情況下,我就不會去第一組的軸線之一。
謝謝!最終的結果給了我想要的,但它也包含了目標值本身。這並不是一個真正的問題,假設「本身」將始終是返回數組中的第一個值。 – Tom