首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向量化Python中的函数

向量化Python中的函数
EN

Stack Overflow用户
提问于 2020-05-11 10:15:17
回答 1查看 75关注 0票数 0

我有一个想要矢量化的函数:

代码语言:javascript
运行
复制
import pandas as pd
import numpy as np
import random
import statsmodels.api as sm

data = pd.DataFrame({
    'state': ['a', 'b', 'c']*200,
    'read': [random.uniform(10,50) for i in range(600)],
    'write': [random.uniform(0,10) for i in range(600)],
    'cansu': [random.uniform(11,20) for i in range(600)],
    'brink': [random.uniform(2,10) for i in range(600)]
})


loop = pd.DataFrame({
    'state': ['a','a','c','b','c'],
    'x': [1,2,3,2,4],
    'y': [2,3,4,4,1]
})

def regress(z,x,y):
    X = data.query("state==@z").iloc[:,x].values
    X = sm.add_constant(X)
    Y = data.query("state==@z").iloc[:,y].values
    result = sm.OLS(Y,X).fit()
    return result.params[1]

我知道我可以使用apply, list comprehensions, itertools, map, filter, reduce, np.vectorize, etc.和所有很酷的功能。但是,我希望能够这样做:

代码语言:javascript
运行
复制
loop['slope'] = regress(loop['state'].values, loop['x'].values, loop['y'].values)

它目前不起作用。这个是可能的吗?如果是,我如何重写或修改我的函数以使其成为可能?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-11 23:08:07

试着这样做

与您的代码相同:

代码语言:javascript
运行
复制
import statsmodels.api as sm

data = pd.DataFrame({
    'state': ['a', 'b', 'c']*200,
    'read': [random.uniform(10,50) for i in range(600)],
    'write': [random.uniform(0,10) for i in range(600)],
    'cansu': [random.uniform(11,20) for i in range(600)],
    'brink': [random.uniform(2,10) for i in range(600)]
})


loop = pd.DataFrame({
    'state': ['a','a','c','b','c'],
    'x': [1,2,3,2,4],
    'y': [2,3,4,4,1]
})

def regress(z,x,y):
    X = data.query("state==@z").iloc[:,x].values
    X = sm.add_constant(X)
    Y = data.query("state==@z").iloc[:,y].values
    result = sm.OLS(Y,X).fit()
    return result.params[1]

列表中的执行:

代码语言:javascript
运行
复制
loop['slope'] = regress(list(loop['state'].values), list(loop['x'].values), list(loop['y'].values))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61721285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档