J'ai un ordinateur portable jupyter dans lequel j'utilise la fonction logistique pour retourner un tableau qui est normalisé.
Code:
import math
import numpy as np
# takes a list of numbers as input
def logistic_transform(nums):
e = math.e
print(e)
print(nums)
for num in nums:
num = 1 / 1 + (e ** num)
return nums
input = [1, 2, 3]
test = logistic_transform(input)
print(test)
La sortie est:
2.718281828459045
[1, 2, 3]
[1, 2, 3]
Pourquoi les modifications ne sont-elles pas appliquées aux valeurs de input[]
?
3 réponses
Tout d'abord, votre fonction logistique n'a pas de sens, cela devrait être quelque chose comme, je suppose:
(1 / (1 + (e ** (-num)))
Ce que vous faites, c'est retirer un élément en le sauvegardant dans une variable num
et mettre à jour la variable num
, et non le mettre à jour dans la liste nums
.
Soit utiliser la compréhension de liste:
nums = [(1 / (1 + (e ** (-num)))) for num in nums]
Ou mettez à jour la liste comme
for num in range(len(nums)):
nums[num] = 1 /(1 + (e ** (-nums[num])))
Ici, cela devrait bien fonctionner:
import math
def logistic_transform(nums):
e = math.e
print(e)
print(nums)
nums = [(1 / (1 + (e ** (-num)))) for num in nums]
return nums
input = [1, 2, 3]
test = logistic_transform(input)
print(test)
Mettez simplement vos résultats dans une autre liste!
import math
import numpy as np
p_num =[]
# takes a list of numbers as input
def logistic_transform(nums):
e = math.e
print('e',e)
print('nums',nums)
for num in nums:
p_num.append(1 / 1 + (e ** num))
return p_num
input = [1, 2, 3]
test = logistic_transform(input)
print('test',test)
E 2.718281828459045
Nums [1, 2, 3]
Test [3.718281828459045, 8.389056098930649, 21.085536923187664]
Ce que vous obtenez simplement une nouvelle liste, essayez une nouvelle liste:
new_list = []
for num in nuns:
#do ur stuff
new_list.append(num)
return new_list
Questions connexes
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.