微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

优化熊猫种子科学操作

如何解决优化熊猫种子科学操作

总有没有要依靠特定种子来加快每行scipy rvs方法调用吗?

import pandas as pd
import numpy as np
from scipy.stats import norm

df = pd.DataFrame({"loc": range(1000),"seed": range(1000)})

def apply_rvs(x):
    np.random.seed(x["seed"])
    return norm.rvs(x["loc"],1)

%timeit df.apply( lambda x: apply_rvs(x),axis=1)
# 109 ms ± 3.53 ms per loop (mean ± std. dev. of 7 runs,10 loops each)

numba似乎不适用于肮脏的物体

import numba

@numba.jit
def numba_apply_rvs(x):
    np.random.seed(x["seed"])
    return norm.rvs(x["loc"],1)

df.apply( lambda x: numba_apply_rvs(x),axis=1)

由于启用了函数“ apply_rvs”导致类型推断失败,导致编译回落到对象模式,原因是:未键入的全局名'norm':无法确定的Numba类型>

除了并行化之外,还有什么其他方法可以用来加快此操作的速度?

如果我可以打个电话生成所有类似的值,那就很好

In [33]: norm.rvs([1,2,3,4],[.1,.1,.1])                                                         
Out[33]: array([0.93510993,2.15662676,2.79086298,4.14563281])

但不幸的是,random_state无法作为数组传递。

解决方法

您的活动部件过多---熊猫,numba,scipy.stats ---我们需要做更多的工作来解决瓶颈所在。例如。是熊猫还是只是随机样本的生成? IOW,您应该在没有熊猫的情况下为后者计时。

如果瓶颈是随机抽样,则使用a := "<tlc:919876543212@abc.google.com>; tag=kkytuybsjdf <nil>" n := strings.Index(a,":") m := strings.Index(a,"@") if n > -1 && m > -1 { number := a[n+1 : m] fmt.Println(number) } else { fmt.Println("Index not found") } 中的正态分布。否则,请考虑加快熊猫部分的速度等

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。