Без вызова каких-либо внешних функций, это простой способ преобразовать / преобразовать серию точек данных x, y в двумерный массив, подходящий для использования в skimage:
def xy_to_binary2d(ts):
'''Convert a list of (x,y) tuples to binary 2d format acceptable to skimage.'''
if ts.dtype != 'int32':
print('Only integer input is supported.')
xmax,ymax = ts.max(axis=0)
__,ymin = ts.min(axis=0)
if ymin < 0:
print('Negative integers are not supported.')
r = np.zeros((ymax+2,xmax+2))
for each in ts:r.itemset(each[1],each[0])
return r
Давайте протестируем это:
ts =np.array([[1,1],[2,1],[3,2],[4,3],[5,5],[6,8],[7,13]])
xy_to_binary2d(ts)
Вывод:
array([[ 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 1., 1., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 1., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 1., 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., 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., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 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.]])
И красивая картинка ... plt.imshow(xy_to_binary2d(ts))
person
Matthew Fairleaf
schedule
15.08.2017