Векторизация Python для циклов
Я был бы признателен за помощь в поиске и понимании питонического способа оптимизации следующих манипуляций с массивами во вложенных циклах:
def _func(a, b, radius):
"Return 0 if a>b, otherwise return 1"
if distance.euclidean(a, b) < radius:
return 1
else:
return 0
def _make_mask(volume, roi, radius):
mask = numpy.zeros(volume.shape)
for x in range(volume.shape[0]):
for y in range(volume.shape[1]):
for z in range(volume.shape[2]):
mask[x, y, z] = _func((x, y, z), roi, radius)
return mask
кудаvolume.shape
(182, 218, 200) иroi.shape
(3,) обаndarray
типы; а такжеradius
являетсяint