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[]?

1
tammy2442 16 avril 2018 à 03:20

3 réponses

Meilleure réponse

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)
0
Tanay Agrawal 16 avril 2018 à 01:40

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]

1
Ashlou 16 avril 2018 à 00:26

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
0
JYFelt 16 avril 2018 à 00:33