Для сценария, над которым я работаю, я хочу сделать необязательным передачу массива в функцию. Способ, которым я пытался это сделать, - сделать соответствующую переменную (residue
) kwarg
.
Проблема в том, что когда я делаю это таким образом, python меняет тип d dwar для kwarg с numpy.ndarray
на dict
. Самое простое решение - преобразовать переменную обратно в np.array
, используя:
residue = np.array(residue.values())
Но я не считаю это очень элегантным решением. Поэтому мне было интересно, может кто-нибудь показать мне «более красивый» способ сделать это и, возможно, объяснить, почему Python делает это?
Рассматриваемая функция:
#Returns a function for a 2D Gaussian model
def Gaussian_model2D(data,x_box,y_box,amplitude,x_stddev,y_stddev,theta,**residue):
if not residue:
x_mean, y_mean = max_pixel(data) # Returns location of maximum pixel value
else:
x_mean, y_mean = max_pixel(residue) # Returns location of maximum pixel value
g_init = models.Gaussian2D(amplitude,x_mean,y_mean,x_stddev,y_stddev,theta)
return g_init
# end of Gaussian_model2D
Функция вызывается с помощью следующей команды:
g2_init = Gaussian_model2D(cut_out,x_box,y_box,amp,x_stddev,y_stddev,theta,residue=residue1)
Версия Python, в которой я работаю, - 2.7.15
.