小编luc*_*one的帖子

为什么某些隐式类型转换在机器上是安全的而不是在另一台上?如何防止此跨平台问题?

我最近在我的代码上发现了一个错误,我花了几个小时来调试.

问题出在一个定义为:

unsigned int foo(unsigned int i){
   long int v[]={i-1,i,i+1} ;
       .
       .
       .
 return x ; // evaluated by the function but not essential how for this problem.
}
Run Code Online (Sandbox Code Playgroud)

v的定义在我的开发机器上没有引起任何问题(ubuntu 12.04 32位,g ++编译器),其中unsigned int被隐式转换为long int,因此负值被正确处理.

在另一台机器(ubuntu 12.04 64位,g ++编译器)上,但此操作并不安全.当i = 0时,v [0]没有设置为-1,而是设置为一些奇怪的大值(因为它经常在尝试使无符号int为负时发生).

我可以解决将i的值转换为long int的问题

long int v[]={(long int) i - 1, (long int) i, (long int) i + 1};
Run Code Online (Sandbox Code Playgroud)

一切正常(在两台机器上).

我无法弄清楚为什么第一个在机器上正常工作而在另一个上不起作用.

你能帮助我理解这一点,以便将来可以避免这个或其他问题吗?

c++ casting explicit implicit

5
推荐指数
1
解决办法
157
查看次数

Python包:如何避免重新定义作者版本等?

我想分发一个Python包(我想使用setuptools,我已经有一个工作的setup.py文件),以及相关的文档(使用Sphinx生成).

我发现自己有点困惑,因为我必须在不同的部分指定作者姓名,维护者,版本,发布,日期,电子邮件等.

我想知道是否有某种方法只为包定义这种常见信息一次,然后在setup.py脚本和.rst文件中使用它等等.

解决这个问题的可能方法是什么?

python packaging

5
推荐指数
1
解决办法
214
查看次数

如何从带有套索的线性模型中获取截距(lars R包)

我很难通过R包估算lars我的数据模型.

例如,我创建一个假数据集x和相应的值y,如下所示:

x = cbind(runif(100),rnorm(100))
colnames(x) = c("a","b")
y = 0.5 + 3 * x[,1,drop = FALSE]
Run Code Online (Sandbox Code Playgroud)

接下来,我使用lars函数训练一个使用套索正则化的模型:

m = lars(x,y,type = "lasso", normalize = FALSE, intercept = TRUE)
Run Code Online (Sandbox Code Playgroud)

现在我想知道估计的模型是什么(that I know to be: y = 0.5 + 3 * x[,1] + 0 * x[,2])

我只对最后一步获得的系数感兴趣:

cf = predict(m, x, s=1, mode = "fraction", type = "coef")$coef
cf
a b 
3 0
Run Code Online (Sandbox Code Playgroud)

这些是我期望的系数,但是我找不到从中获取intercept(0.5)的方法m.

我试图检查predict.lars适合的代码,如下所示:

fit = drop(scale(newx, 
           object$meanx, FALSE) %*% …
Run Code Online (Sandbox Code Playgroud)

r lasso-regression intercept lars

5
推荐指数
1
解决办法
3631
查看次数

R:如何从R包中的inst/extdata延迟加载变量

我的inst/extdata中有一个文件helper.RData文件,其中包含我的包中的函数要使用的变量和数据集,但并不意味着用户可以访问.

我使用以下命令在包的开头加载它:

load(system.file("extdata","helper.RData", package = "mypackage"))
Run Code Online (Sandbox Code Playgroud)

由于文件很大,这需要相当多的时间,并且在开发过程中尤其令人烦恼(我load_all()devtools包中使用了相当多的功能).

我宁愿让它延迟加载,以便只在实际需要时才加载文件.

我怎样才能做到这一点?

lazy-loading r devtools

5
推荐指数
1
解决办法
1337
查看次数

导入__module__ python:为什么下划线?

我是Python新手,已经开始研究其他人编写的代码了.

在从Pypi下载的软件包源代码中,我注意到了使用

import __module__
Run Code Online (Sandbox Code Playgroud)

使用src包文件夹中定义的函数和类.

这是常见做法吗?我实际上无法理解这种语法,你可以向我解释一下或者给我一些参考吗?

python import module double-underscore

4
推荐指数
1
解决办法
1250
查看次数

使用Python urllib2 /请求对Google云端硬盘进行身份验证并下载电子表格

我想下载我在Google云端硬盘中向Google验证的文档(我只希望某些用户能够访问它并且不想在网上发布它).

我尝试过使用,requests但显然我做错了.从浏览器我可以将我的文档下载到该地址 https://docs.google.com/spreadsheets/d/<document key>/export?format=xls.

所以在我的python脚本中,我执行以下操作:

import os
import requests
import shutil
from requests.auth import HTTPBasicAuth

remote = "https://docs.google.com/spreadsheets/d/<document key>/export?format=xls"
username = os.environ['GOOGLEUSERNAME']
password = os.environ['GOOGLEPASSWORD']
r = requests.get(remote, auth=HTTPBasicAuth(username,password))
if r.status_code == 200:
  with open("document.xls","wb") as f:
    shutil.copyfileobj(r.raw, f)
Run Code Online (Sandbox Code Playgroud)

但结果document.xls是空的.

我究竟做错了什么?

python excel http download python-requests

4
推荐指数
1
解决办法
1580
查看次数

气流:每天重新执行过去N天的DAG作业

我已安排执行DAG每天运行。它完美地工作了一天。

但是,每天我不仅要对当天{{ds}}重新执行,还要对前n天重新执行(比如说n = 7)。

例如,在计划于“ 2018-01-30”运行的下一次执行中,我希望Airflow不仅以执行日期“ 2018-01-30”运行DAG,而且希望为所有用户重新运行DAG从“ 2018-01-23”到“ 2018-01-30”的前几天。

有没有一种简单的方法可以使之前的执行“无效”,从而自动运行回填?

airflow airflow-scheduler

4
推荐指数
1
解决办法
1654
查看次数

哈希对象中的numpy.nan奇怪的行为

当我使用numpy.nan时,我遇到了一种奇怪的行为,我无法理解.这是一个最小的例子:

from numpy import nan

def _bool3key(x):
  """
  Defines the keys used to order the list.
  The only allowed values are True, False, 1,0 and numpy.nan.
  """ 
  return _bool3key.__logic_sort__[x]
_bool3key.__logic_sort__ = {0:-1, nan:0 , 1:1}

def and3(*args):
   return min(*args,key=_bool3key)


def f(x):
  """long function that produces in output a vector containing only 0, nan and 1s.
  pass #
Run Code Online (Sandbox Code Playgroud)

有时候and3函数会失败,尽管在f(x)返回的向量中只有0,nan或1值:原因是nan不是numpy.nan类型的...

例如,v = f(x)产生了一个矢量[nan,nan].但是,如果我尝试键入: v[0] is nan我得到False(这是导致什么原因而不是工作); 但奇怪的是那v[1] is nan就是True.

是什么导致了这种行为?如何在and3 …

python numpy nan

3
推荐指数
1
解决办法
98
查看次数

根据输出文档类型排除部分R降价文档

是否可以仅针对特定输出呈现Rmarkdown文档的一部分?

例如,我想使用相同的分析来编写报告和演示文稿.

我希望能够将文档的某些部分仅在输出时呈现html_document,而不是在输出时呈现slidy_presentation; 我并不一定意味着一大堆代码,而是文本.

r knitr r-markdown

3
推荐指数
1
解决办法
415
查看次数

bash执行整个脚本,但如果任何中间作业失败,则返回退出代码> 0

我有一个bash脚本script.sh,如:

./step1.sh
./step2.sh
./step3.sh
Run Code Online (Sandbox Code Playgroud)

每个步骤*.h脚本都会返回正确的错误代码,无论它们是否失败.

现在,如果step3.sh失败,我会得到一个合适的退出代码,但是如果step1.sh或step2.sh失败并且step3.sh成功,那么我得到status = 0,这是不理想的.

我知道我可以使用

set -e
Run Code Online (Sandbox Code Playgroud)

在我的脚本的顶部,如果任何中间步骤失败,使脚本失败,但这不是我想要的.

我想知道是否有一个简单的选项用于执行每个中间脚本(即使其中一个失败)但是如果其中任何一个失败而返回退出代码> 0而不必跟踪每个单独的退出代码手动.

linux bash shell

3
推荐指数
1
解决办法
565
查看次数