Вы можете использовать векторизацию для очень эффективного расчета расстояния без необходимости в цикле for:
x_axis = np.linspace(-1, 1, 256)[:, None]
y_axis = np.linspace(-1, 1, 256)[None, :]
arr = np.sqrt(x_axis ** 2 + y_axis ** 2)
, или вы можете использовать сетку:
x_axis = np.linspace(-1, 1, 256)
y_axis = np.linspace(-1, 1, 256)
xx, yy = np.meshgrid(x_axis, y_axis)
arr = np.sqrt(xx ** 2 + yy ** 2)
и интерполировать междуinner
и outer
цветов с использованием трансляции снова
inner = np.array([0, 0, 0])[None, None, :]
outer = np.array([1, 1, 1])[None, None, :]
arr /= arr.max()
arr = arr[:, :, None]
arr = arr * outer + (1 - arr) * inner