【发布时间】:2018-10-21 22:33:07
【问题描述】:
我想在我的 numpy 矩阵中的某个点的范围 1(或正好对角线)内找到一个点列表:
例如说我的矩阵m 是:
[[0 0 0 0 0]
[0 0 0 0 0]
[0 0 1 0 0]
[0 0 0 0 0]
[0 0 0 0 0]]
我想获得一个元组列表或代表以下 X 的 9 个点的所有坐标的东西:
[[0 0 0 0 0]
[0 X X X 0]
[0 X X X 0]
[0 X X X 0]
[0 0 0 0 0]]
这是另一个目标点位于边缘的示例:
[[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 1]
[0 0 0 0 0]
[0 0 0 0 0]]
在这种情况下,目标点的距离 1 内只有 6 个点:
[[0 0 0 0 0]
[0 0 0 X X]
[0 0 0 X X]
[0 0 0 X X]
[0 0 0 0 0]]
编辑:
假设我知道目标点的坐标,使用 David Herrings 关于切比雪夫距离的回答/评论是我尝试解决上面的示例 2:
from scipy.spatial import distance
point = [2, 4]
valid_points = []
for x in range(5):
for y in range(5):
if(distance.chebyshev(point, [x,y]) <= 1):
valid_points.append([x,y])
print(valid_points) # [[1, 3], [1, 4], [2, 3], [2, 4], [3, 3], [3, 4]]
这对于更大的数组来说似乎有点低效,因为我只需要检查一小部分单元格,而不是整个矩阵。
【问题讨论】:
-
距离是切比雪夫距离,也称为国王度量(来自国际象棋)。
标签: python numpy scipy scipy-spatial