【发布时间】:2020-04-29 17:12:34
【问题描述】:
我有大型 2D/3D NumPy 二进制值数组。 1 代表边界,0 代表区域。附带一个步长数组,表示每个维度的步长大小。
我正在寻找一个高效的程序,它可以找到(其中一个)与给定元素最近的边界元素。距离是欧式距离。
2D 示例:
import seaborn as sns
import numpy as np
step_size = np.array([5,5]) # size of step in each dimension
arr = np.array([[0,0,0,0,0,0,0,0,1,0],[1,0,0,0,0,0,0,1,0,0],[1,0,0,0,0,0,0,1,0,0],[0,1,0,0,0,0,1,0,0,0],[0,0,1,0,0,0,0,1,0,0],[0,0,1,1,1,1,1,0,0,0]])
sns.heatmap(arr, annot=True, cbar=False, linewidths=.3)
a = (0,2) # a given element index
b = (1,0) # nearest boundary element index, which is to be found by the program
a_coor = np.multiply(np.array(a), step_size) # array([0,10])
b_coor = np.multiply(np.array(b), step_size) # array([5,0])
distance = np.linalg.norm(a_coor-b_coor) # 11.18
【问题讨论】:
标签: python arrays numpy matrix geometry