python - 如何在 python 中获取数据集中列的所有记录的 sigmoid?
问题描述
我想在我的数据集中取一列的 sigmoid。
我已经为相同的定义了一个函数
import math
def sigmoid(x):
return 1 / (1 + math.exp(-x))
但是我如何一次给出列的所有值?
解决方案
您可以使用apply
,但它不是 vecorized 解决方案。更好/更快的方法是np.exp
用于 vecorized 方法。
df = pd.DataFrame({'A': [10, 40, -6, 1, 0, -1, -60, 100, 0.2, 0.004, -0.0053]})
import math
def sigmoid(x):
return 1 / (1 + math.exp(-x))
df['s1'] = df.A.apply(sigmoid)
df['s2'] = 1 / (1 + np.exp(-df.A))
print (df)
A s1 s2
0 10.0000 9.999546e-01 9.999546e-01
1 40.0000 1.000000e+00 1.000000e+00
2 -6.0000 2.472623e-03 2.472623e-03
3 1.0000 7.310586e-01 7.310586e-01
4 0.0000 5.000000e-01 5.000000e-01
5 -1.0000 2.689414e-01 2.689414e-01
6 -60.0000 8.756511e-27 8.756511e-27
7 100.0000 1.000000e+00 1.000000e+00
8 0.2000 5.498340e-01 5.498340e-01
9 0.0040 5.010000e-01 5.010000e-01
10 -0.0053 4.986750e-01 4.986750e-01
#110 k rows
df = pd.DataFrame({'A': [10, 40, -6, 1, 0, -1, -60, 100, 0.2, 0.004, -0.0053] * 10000})
In [15]: %timeit df['s1'] = df.A.apply(sigmoid)
57.4 ms ± 6.78 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
In [16]: %timeit df['s2'] = 1 / (1 + np.exp(-df.A))
2.64 ms ± 81.6 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
推荐阅读
- python - 颠簸版本和同时构建?
- angular - 如何修复重定向调用的错误:“无法读取未定义类型错误的属性‘拆分’”
- c# - OAuthPrompt Waterfall 需要启动两次才能让 RouteAsync 被多次调用
- .net-core - 如何使用子域将客户端 ID 委托给 Azure B2C 进行身份验证
- c - 为什么我的代码没有在这个链表中插入一个新节点?
- jsf - HttpServletRequest.getParameter 打破 Primefaces FileUploadFilter?
- java - ImageView 折叠并且不显示创建的缩略图
- elixir - if 块中定义的函数是否在编译时被取出?如果在编译时运行,顶层会运行吗?
- javascript - 使用 Apollo 和 GraphQL 的 React 表单不会触发 onSubmit
- c# - 将 FieldNames 和 Values 动态传递给 linq