Ответ 1
Не игнорируя возвращенные значения, вы не назначаете их переменным.
my_array, my_variable = my_function()
Есть ли простой способ получить функцию для возврата np.array и переменной?
например:
my_array = np.zeros(3)
my_variable = 0.
def my_function():
my_array = np.array([1.,2.,3.])
my_variable = 99.
return my_array,my_variable
my_function()
чтобы значения, вычисленные в функции, могли использоваться позже в коде? Вышеупомянутое игнорирует значения, вычисленные в функции.
Я попробовал вернуть кортеж {my_array, my_variable}, но получил сообщение типа unhashable для np.array
Д
Не игнорируя возвращенные значения, вы не назначаете их переменным.
my_array, my_variable = my_function()
Ваша функция верна. Когда вы пишете return my_array,my_variable
, ваша функция фактически возвращает кортеж (my_array, my_variable)
.
Вы можете сначала присвоить возвращаемое значение my_function()
переменной, которая будет описываться этим кортежем:
result = my_function()
Далее, поскольку вы знаете, сколько элементов находится в кортеже досрочно, вы можете распаковать кортеж на два разных значения:
result_array, result_variable = result
Или вы можете сделать это в одной строке:
result_array, result_variable = my_function()
Другие примечания, связанные с возвращаемыми кортежами, и распаковка:
Я иногда разделяю два этапа, если моя функция может вернуть None
в неисключительный отказ или пустой случай:
result = my_function()
if result == None:
print 'No results'
return
a,b = result
# ...
Вместо распаковки, вы также можете получить доступ к указанным элементам из кортежа, используя их индекс:
result = my_function()
result_array = result[0]
result_variable = result[1]
Если по какой-то причине у вас есть 1-элементный кортеж:
return (my_variable,)
Вы можете распаковать его с помощью одного и того же (слегка неловкого) синтаксиса с одной запятой:
my_variable, = my_function()
простой ответ
my_array, my_variable = my_function()
После определения my_function используйте my_function = np.vectorize(my_function).
Например,
def jinc(x):
if x == 0.0:
return 1
return 2*j1(x)/x
jinc = np.vectorize(jinc)
Я получил 1.250/4.000 ГПД. В пяти классах, которые я взял, вот мои результаты семестра весны 2019 года: F/A D/A F/A B+/A и 1 кредитный класс (B-/A). Итак, 1,25 ГПа за семестр в течение второго курса