小编Joa*_*him的帖子

在Python中将整数附加到列表的开头

我有一个整数和一个列表.我想创建一个以变量开头并以列表结尾的新列表.写a + list我得错了.编译器处理a为整数,因此我不能使用append或extend.你会怎么做?

python variables list append

434
推荐指数
8
解决办法
61万
查看次数

使用Homebrew在OS X上更新OpenSSL

我正在使用MacOS X 10.7.5,由于握手失败,我需要更新的OpenSSL版本.互联网上有几个教程,我尝试了以下内容:

brew install openssl
brew link openssl --force
Run Code Online (Sandbox Code Playgroud)

然而,它不起作用:

openssl version
OpenSSL 0.9.8r 8 Feb 2011

brew unlink openssl && brew link openssl --force
Unlinking /usr/local/Cellar/openssl/1.0.1e... 1139 links removed
Linking /usr/local/Cellar/openssl/1.0.1e... 1139 symlinks created
Run Code Online (Sandbox Code Playgroud)

SVN问题也未解决.有任何想法吗?我宁愿不尝试MacPorts方式,因为它可能会干扰Homebrew.

svn macos homebrew openssl

75
推荐指数
5
解决办法
14万
查看次数

退出Python调试器ipdb

我经常使用ipdb,只是跳转到一段孤立的代码,即很难编写一个使用它的真实脚本.相反,我用模拟编写了一个最小的测试用例并跳转到它.

工作流程的示例:

def func():
   ...
   import ipdb
   ipdb.set_trace()
   ...

def test_case():
    ...
    func()
    ...
Run Code Online (Sandbox Code Playgroud)

然后,调用

py.test test_file.py -s -k test_case
Run Code Online (Sandbox Code Playgroud)

现在,通常我只检查一个或两个变量,然后想要退出.更改代码并重新执行.

我该如何戒烟?手册说q退出调试器.它(真的)没有.在调试器实际终止之前,您必须退出几次.Ctrl-C和Ctrl-D的相同行为(多次击中Ctrl-D的挫折最终也会退出终端).

是否有一种强制退出的聪明方法?这个工作流程是否合理?这样做的标准方法是什么?

python debugging workflow exit ipdb

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

使用makefile和vim没有提示

我正在使用vim而且我正在做很多事情

:make
Run Code Online (Sandbox Code Playgroud)

在vim内.唯一真正烦人的是我必须按两次ENTER才能跳回编辑器.如果一切顺利,我只想直接回去.我希望看到错误一次并按一个键直接跳转到错误行.

有任何想法吗?

vim makefile

9
推荐指数
1
解决办法
1390
查看次数

R使用diff:二进制运算符错误的非数字参数

我们使用以下命令解析带有一些数字的CSV文件:

tt <- read.table("test2.csv",sep=";",stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)

它有效.打印tt[1,]产生一个很好的矢量,sd(tt[1,])是明智的.

但是,当我们尝试

diff(tt[1,])
Run Code Online (Sandbox Code Playgroud)

命令行返回错误:

Error in r[i1] - r[-length(r):-(length(r) - lag + 1L)] :
    non-numeric argument to binary operator error
Run Code Online (Sandbox Code Playgroud)

这是为什么?有任何想法吗?

types r

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

使用代理后面的Vundle

我们有这个简洁的小脚本在工作,让我们使用互联网over linux环境代理.例如

withproxy git clone https://github.com/VundleVim/Vundle.vim.git
Run Code Online (Sandbox Code Playgroud)

工作得很好,甚至没有提示我输入我的用户名和密码.

如何在.vimrcfor Vundle 中进行设置,以便所有git内容都以此代理脚本为前缀?

git vim proxy vundle

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

仅保留 DataFrame 中连续重复行的第一行

假设我有一个包含一列数据的 DataFrame。例如:

np.random.random_integers(0,2,1000)
data = np.cumsum(np.random.random_integers(0,2,1000))
idx = pd.date_range('1-1-2001', freq='D', periods=1000)
df = pd.DataFrame(data, idx)
Run Code Online (Sandbox Code Playgroud)

我不想使用完整的 DataFrame,而是只想返回与前一行不同的那些行。

因此,这

2001-01-20   21
2001-01-21   21
2001-01-22   21
2001-01-23   23
2001-01-24   24
2001-01-25   24
Run Code Online (Sandbox Code Playgroud)

会导致这个

2001-01-20   21
2001-01-23   23
2001-01-24   24
Run Code Online (Sandbox Code Playgroud)

现在我会这样做

dff = df.diff() # Compute another Series with the differences
dff.ix[0, ] = df.ix[0, ] # Instead of NAN for the row use first row of df
df['diff'] = dff # Add as column in df
df = df[df['diff'] >= 1] # …
Run Code Online (Sandbox Code Playgroud)

python time-series dataframe pandas

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

总结一下np.array或np.float

我们有一个基于numpy的算法,应该处理不同类型的数据.

def my_fancy_algo(a):
    b = np.sum(a, axis=1)
    # Do something b
    return b
Run Code Online (Sandbox Code Playgroud)

如果我们通过a=np.array[1.0, 2.0, 3.0]然后b评估到[6.0].

如果我们通过,a=6.0那么我们得到

*** ValueError: 'axis' entry is out of bounds
Run Code Online (Sandbox Code Playgroud)

期望的行为是我们为两个输入获得相同的返回值6.0not([6.0]).

什么是正确的pythonic和安全的方法来处理这个?typeshape

python arrays types numpy

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

以 DAG 方式调度作业

我们有一个包含不同类型工作的系统。例如,让我们称它们为:

job_1
job_2
job_3
Run Code Online (Sandbox Code Playgroud)

它们都需要不同的参数集(和可选参数)。即我们job_1(x)为不同的x= A, B, C ...job_2运行一组参数,这些参数取决于结果job_1(x)job_2加载job_A(x)存储的数据。等等。

结果是依赖关系的树结构。现在,这些工作偶尔会因某种原因而失败。因此,如果job_Aforx=B失败,该树的分支将完全失败并且不应运行。所有其他分支都应该运行。

所有作业都用 Python 编写并使用并行性(基于产生 SLURM 作业)。它们是用 cron 安排的。这显然不是很好,有两个主要缺点:

  • 调试起来非常困难。无论树中较高的作业是否失败,所有作业都会运行。如果不深入了解依赖关系,就很难看出问题出在哪里。
  • 如果更高的作业(例如job_A)未完成,则job_B可能会计划运行,并且会失败或基于过时的日期运行。

为了解决这个问题,我们正在研究用于调度或可视化的气流,因为它是用 Python 编写的,它似乎大致符合我们的需求。不过,我看到了不同的挑战:

  • 作业的依赖关系树要么是很一般(即job_B取决于job_A)或非常宽(即job_B(y)对100个参数依赖job_A(x=A)。在第一种情况下的可视化树将有大约10片叶子,但会使得调试非常困难,因为这项工作可能只是对于某个参数失败了。后一种情况下的可视化树会很宽,大约有 300 个叶子。它会更准确,但可视化可能很难阅读。我们可以过滤失败的作业,看看它们的依赖关系吗?
  • 我们在作业中有并行性(我们需要它,否则作业运行超过一天,我们想每天重新运行整个批次)这是否会破坏我们的日程安排?
  • 我们希望尽可能少地改变我们的工作和数据管理。
  • 我们能否以一种易于理解的方式实施关于接下来产生哪些工作的规则系统?

气流是一个不错的选择吗?我知道还有其他一些(luigi、Azkaban 等)与 Hadoop 堆栈有些相关(我们没有使用它,因为它不是大数据)。需要多少黑客攻击?多少黑客行为是明智的?

python linux cron scheduled-tasks airflow

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

类型检查熊猫数据框

我想对Pandas DataFrames进行类型检查,即我想指定DataFrame必须具有哪些列标签以及其中dtype存储了哪种数据类型()。粗略的实现(受此问题启发)将像这样工作:

from collections import namedtuple
Col = namedtuple('Col', 'label, type')

def dataframe_check(*specification):
    def check_accepts(f):
        assert len(specification) <= f.__code__.co_argcount
        def new_f(*args, **kwds):
            for (df, specs) in zip(args, specification):
                spec_columns = [spec.label for spec in specs]
                assert (df.columns == spec_columns).all(), \
                  'Columns dont match specs {}'.format(spec_columns)

                spec_dtypes = [spec.type for spec in specs]
                assert (df.dtypes == spec_dtypes).all(), \
                  'Dtypes dont match specs {}'.format(spec_dtypes)
            return f(*args, **kwds)
        new_f.__name__ = f.__name__
        return new_f
    return check_accepts
Run Code Online (Sandbox Code Playgroud)

我不介意检查功能的复杂性,但是它增加了很多样板代码。

@dataframe_check([Col('a', int), Col('b', …
Run Code Online (Sandbox Code Playgroud)

python typechecking python-3.x pandas

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