Python Jupyter笔记本未正确应用函数

Python Jupyter笔记本未正确应用函数,python,jupyter-notebook,Python,Jupyter Notebook,我有一个jupyter笔记本,其中我使用logistic函数返回一个规范化的数组 代码: 输出为: 2.718281828459045 [1, 2, 3] [1, 2, 3] 为什么更改没有应用到input[]中的值?只需将结果放在另一个列表中 import math import numpy as np p_num =[] # takes a list of numbers as input def logistic_transform(nums): e = math.e p

我有一个jupyter笔记本,其中我使用logistic函数返回一个规范化的数组

代码:

输出为:

2.718281828459045
[1, 2, 3]
[1, 2, 3]

为什么更改没有应用到
input[]
中的值?

只需将结果放在另一个列表中

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]


测试[3.718281828459045,8.389056098930649,21.085536923187664]

你要做的就是获得一个新列表,尝试一个新列表:

    new_list = []
    for num in nuns:
        #do ur stuff
        new_list.append(num)
    return new_list

首先,你的后勤职能没有意义, 我想应该是这样的:

(1 / (1 + (e ** (-num)))
您要做的是取出一个元素,将其保存在变量
num
中,并更新变量
num
,而不是在列表
nums
中更新它

使用列表理解:

nums=[(1/(e**(-num)))表示num中的num]

或者像这样更新列表

for num in range(len(nums)):
    nums[num] = 1 /(1 + (e ** (-nums[num])))
在这里,这应该很好:

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)

使用
returnnum
而不是
returnnums
。您只返回输入。我建议将num定义为list并附加值。嘿,谢谢你的反馈。我认为Ashlou给我的解决方案是好的。你是说我的逻辑函数返回的值不正确吗?或者它只是没有遵循最佳实践?ur函数将返回不正确的值。请使用检查括号u r。你可以从上面的公式中看到,当你增加
num
时,它应该朝着0。我的意思是很明显。还有一个标准的逻辑S形函数是:1/(1+e^(-x))哦,哈哈,是的,它肯定会变小。你是对的,我想应该是
-num
而不是
num
对吧(这会导致数字变大)?
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)