Is er een eenvoudige manier om een functie te krijgen om een NP.Array en een variabele terug te sturen?
bijvoorbeeld:
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()
zodat de waarden die in de functie worden berekend, later in de code kunnen worden gebruikt? Het bovenstaande negeert de waarden die in de functie zijn berekend.
Ik probeerde een tuple {my_array, my_variable} te retourneren, maar kreeg het onbelangrijkste bericht voor NP.Array
DN
Antwoord 1, Autoriteit 100%
Het negeert de geretourneerde waarden niet, u geeft ze niet toe aan variabelen.
my_array, my_variable = my_function()
Antwoord 2, Autoriteit 145%
Uw functie is correct. Wanneer u schrijft return my_array,my_variable
retourneren, retourneert uw functie daadwerkelijk een tuple (my_array, my_variable)
.
U kunt eerst de retourwaarde van my_function()
toewijzen aan een variabele, die deze tuple zou zijn, ik beschrijf:
result = my_function()
Vervolgens, aangezien u weet hoeveel items in de taple van tevoren zijn, kunt u Pak de tuple in twee verschillende waarden:
result_array, result_variable = result
of u kunt het in één regel doen:
result_array, result_variable = my_function()
Andere opmerkingen met betrekking tot het retourneren van tupels en het uitpakken van tupels:
Soms houd ik de twee stappen gescheiden, als mijn functie None
kan retourneren in een niet-uitzonderlijke fout of leeg geval:
result = my_function()
if result == None:
print 'No results'
return
a,b = result
# ...
In plaats van uit te pakken, kunt u ook toegang krijgen tot bepaalde items uit de tuple, met behulp van hun index:
result = my_function()
result_array = result[0]
result_variable = result[1]
Als je om wat voor reden dan ook een tuple van 1 item hebt:
return (my_variable,)
Je kunt het uitpakken met dezelfde (enigszins onhandige) één-komma-syntaxis:
my_variable, = my_function()
Antwoord 3, autoriteit 9%
eenvoudig antwoord
my_array, my_variable = my_function()
Antwoord 4
Gebruik na de definitie van my_function my_function = np.vectorize(my_function).
Bijvoorbeeld
def jinc(x):
if x == 0.0:
return 1
return 2*j1(x)/x
jinc = np.vectorize(jinc)