python-patsy中的倒数
作者:互联网
Patsy的幂不允许负整数,因此,如果我们有一些序列数据X,
patsy.dmatrices('X + X**(-1)', X)
返回错误.如何将X的倒数添加到这样的小数公式中?
解决方法:
在嵌入式函数调用中会关闭运算符的特殊含义.因此,如果您编写X 1 / x,则patsy会将其解释为特殊的patsy和/运算符,但是,如果您编写类似X sin(1 / X)的内容,则patsy会继续将其解释为特殊的patsy运算符,但整个过程(1 / X)表达式将传递给Python进行求值,Python将把/作为正则除法求值.
因此,如果我们要计算sin(1 / X),那就很好.但是我们不(为什么?).我们只需要普通的1 /X.那么我们该怎么做呢?
好吧,我们可能会很棘手:我们需要一个函数调用来欺骗patsy的解析器以忽略/并将其提供给Python-但没有任何东西表明该函数必须执行任何操作.我们可以定义一个识别函数:
def identity(value):
return value
然后在类似X Identity(1 / X)的公式中使用它.
实际上,这个技巧非常方便,patsy已经为您预定义了一个函数,并将其提供为名为I(…)的built-in.通常,您可以将I(…)视为一种引用运算符-这是一种方式:“嘿,patsy,请不要尝试解释该区域中的任何内容,只需将其传递给Python kthx”即可.
因此,请回答您的原始问题:尝试编写dmatrix(“ X I(1 / X)”,data)
(下一个问题:为什么用功能I和所有功能进行这种怪异的破解?答案是,这就是30年前R的方式,我想不到有什么更好的东西值得值得打破兼容性了.)
标签:python,patsy 来源: https://codeday.me/bug/20191012/1898573.html