小编Ame*_*ina的帖子

在Python中使用子进程的Shell管道

我在使用Python调用shell命令时读取了我在StackOverflow上找到的每个线程subprocess,但我找不到适用于我的情况的答案:

我想从Python中执行以下操作:

  1. 运行shell命令command_1.收集变量中的输出result_1

  2. Shell管道 result_1进入command_2并收集输出result_2.换句话说,command_1 | command_2 使用我在之前的步骤中运行时获得的结果运行command_1

  3. 将相同的管道result_1输入第三个命令command_3并收集结果result_3.

到目前为止,我尝试过:

p = subprocess.Popen(command_1, stdout=subprocess.PIPE, shell=True)

result_1 = p.stdout.read();

p = subprocess.Popen("echo " + result_1 + ' | ' + 
command_2, stdout=subprocess.PIPE, shell=True)

result_2 = p.stdout.read();
Run Code Online (Sandbox Code Playgroud)

原因似乎是"echo " + result_1 不能模拟获得管道命令输出的过程.

这是否可以使用子进程?如果是这样,怎么样?

python shell subprocess pipe

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

调整Emacs中的终端大小

假设我有一个运行M-x ansi-term缓冲区(例如运行zsh)的Emacs窗口(即Emacs称之为框架的细分),其~500宽度为像素宽.然后我运行几个shell命令,输出被包装以适应这些500像素.

假设我现在使这个窗口或缓冲区更宽(例如1000像素),可能是因为我杀死了框架中的其他窗口,为我的ansi-term窗口提供了更多空间.

有没有办法让我的ansi-term窗口中的旧输出调整大小以利用新的窗口大小?(即根据新窗口大小制作更宽的线条并重新包装它们)?

emacs shell ansi-term

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

将R interpeter和R作为共享库安装在同一棵树上

我对如何安装R(通过编译)作为共享库感到有点困惑.

这里的说明(Rpy2)说我应该做以下事情:

  # <go to the R source directory>
  make distclean
  ./configure --enable-R-shlib
  make
  make install
Run Code Online (Sandbox Code Playgroud)

但是第一个make(make distclean)将在同一目录树下删除任何先前的R安装(例如bin文件夹的内容).

如果我想为R解释器和共享库使用相同的安装,该怎么办?例如,假设我想使用解释器来安装R包,然后使用安装的共享库来从Rpy2调用R(和那些包).

否则,我如何安装R包以供Rpy2使用?

installation r shared-libraries rpy2

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

Python中的矩阵完成

说我有一个矩阵:

> import numpy as nap
> a = np.random.random((5,5))

array([[ 0.28164485,  0.76200749,  0.59324211,  0.15201506,  0.74084168],
       [ 0.83572213,  0.63735993,  0.28039542,  0.19191284,  0.48419414],
       [ 0.99967476,  0.8029097 ,  0.53140614,  0.24026153,  0.94805153],
       [ 0.92478   ,  0.43488547,  0.76320656,  0.39969956,  0.46490674],
       [ 0.83315135,  0.94781119,  0.80455425,  0.46291229,  0.70498372]])
Run Code Online (Sandbox Code Playgroud)

而且我用它打了一些洞np.NaN,例如:

> a[(1,4,0,3),(2,4,2,0)] = np.NaN; 

array([[ 0.80327707,  0.87722234,         nan,  0.94463778,  0.78089194],
       [ 0.90584284,  0.18348667,         nan,  0.82401826,  0.42947815],
       [ 0.05913957,  0.15512961,  0.08328608,  0.97636309,  0.84573433],
       [        nan,  0.30120861,  0.46829231,  0.52358888,  0.89510461],
       [ 0.19877877,  0.99423591,  0.17236892,  0.88059185,        nan ]]) …
Run Code Online (Sandbox Code Playgroud)

python numpy machine-learning mathematical-optimization scikit-learn

9
推荐指数
3
解决办法
3842
查看次数

lambda中的外部变量在Python中起作用

受到这个答案中的构造的启发,我试图做以下事情:

values = range(3)
vector = np.random.randint(3, size=(5,))
f = lambda x: x in values
result = [f(a) for a in values]
Run Code Online (Sandbox Code Playgroud)

但我明白了global name 'values' is not defined.

如果我尝试上面链接的解决方案,我得到同样的错误,即:

A = [[0,1,2], [1,2,3], [2,3,4]]
v = [1,2]
B = [map(lambda val: val in v) for a in A]
Run Code Online (Sandbox Code Playgroud)

自该解决方案发布以来,Python有没有改变?(我正在使用2.7.4).如果是这样,我如何在lambda函数中访问外部变量?我应该宣布它是全球性的吗?传递它作为另一个输入?

更新1:

我只是在IPython(1.0)的嵌入式shell中注意到这个问题.

更新2:

GitHub上有关于该主题的IPython 票证,但目前还不清楚问题是否已经解决.

更新3(不是来自OP):

这个错误可以在django的shell中重新生成(感谢@Ashwini)

$ ./manage.py shell
Python 2.7.4 (default, Apr 19 2013, 18:32:33) 
Type "copyright", "credits" …
Run Code Online (Sandbox Code Playgroud)

python django lambda ipython

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

熊猫的时间差异

假设我有一个包含多个时间戳和值的数据框.我想测量? values / ?t 每一2.5秒.Pandas是否提供时间差异化的任何工具?

                              time_stamp   values
19492   2014-10-06 17:59:40.016000-04:00  1832128                                
167106  2014-10-06 17:59:41.771000-04:00  2671048                                
202511  2014-10-06 17:59:43.001000-04:00  2019434                                
161457  2014-10-06 17:59:44.792000-04:00  1294051                                
203944  2014-10-06 17:59:48.741000-04:00   867856
Run Code Online (Sandbox Code Playgroud)

python numpy pandas

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

了解多核,多处理器和MPI上的MATLAB

关于MATLAB如何利用并行硬件,我有几个密切相关的问题.它们很短,所以我认为最好将它们放在同一篇文章中:

  • 在不使用Parallel Computing Toolbox时,MATLAB是否利用/受益于多个内核?
  • 在不使用PCT时,MATLAB是否利用/受益于多个处理器?
  • MATLAB 在不使用PCT时是否使用MPI?
  • MATLAB 在使用PCT时是否使用MPI?

parallel-processing matlab mpi

8
推荐指数
2
解决办法
1529
查看次数

R中随机森林的分层抽样

我在以下文档中阅读了以下内容randomForest:

strata:用于分层抽样的(因子)变量.

sampsize:要绘制的样本的大小.对于分类,如果sampsize是地层数量的长度向量,则采样按地层分层,而样本的元素则表示从地层中抽取的数字.

作为参考,该函数的接口由下式给出:

 randomForest(x, y=NULL,  xtest=NULL, ytest=NULL, ntree=500,
              mtry=if (!is.null(y) && !is.factor(y))
              max(floor(ncol(x)/3), 1) else floor(sqrt(ncol(x))),
              replace=TRUE, classwt=NULL, cutoff, strata,
              sampsize = if (replace) nrow(x) else ceiling(.632*nrow(x)),
              nodesize = if (!is.null(y) && !is.factor(y)) 5 else 1,
              maxnodes = NULL,
              importance=FALSE, localImp=FALSE, nPerm=1,
              proximity, oob.prox=proximity,
              norm.votes=TRUE, do.trace=FALSE,
              keep.forest=!is.null(y) && is.null(xtest), corr.bias=FALSE,
              keep.inbag=FALSE, ...)
Run Code Online (Sandbox Code Playgroud)

我的问题是:一会究竟是如何使用strata 和sampsize?这是一个最小的工作示例,我想测试这些参数:

library(randomForest)
iris = read.table("http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data", sep = ",", header = FALSE)
names(iris) = c("sepal.length", "sepal.width", "petal.length", "petal.width", "iris.type")

model = randomForest(iris.type …
Run Code Online (Sandbox Code Playgroud)

r

8
推荐指数
1
解决办法
9891
查看次数

获取带有向量的数据帧的点积,并在Pandas中返回数据帧

我无法dot() 在官方文档中找到该方法的条目.然而,方法就在那里,我可以使用它.为什么是这样?

在这个主题上,有没有办法计算数据框中每一行与另一个向量的元素乘法?(并获得一个dataframe背面?),即类似dot()但不是计算点积,人们计算元素产品.

python dataframe dot-product pandas

8
推荐指数
2
解决办法
1万
查看次数

eterm-color:未知的终端类型

在ansi-termEmacs 的终端中,当我ssh到特定的远程主机时,终端无法正确识别,我收到错误:

'eterm-color': unknown terminal type.
Run Code Online (Sandbox Code Playgroud)

我添加export TERMINFO=~/.terminfo到.bashrc远程计算机上,我在远程计算机上尝试了以下内容:

cp -r /usr/share/emacs/21.4/etc/e ~/.terminfo
Run Code Online (Sandbox Code Playgroud)

为了以防万一,我还尝试将我自己的本地副本/etc/e(Emacs 24.3)复制到~/.terminfo远程计算机上.

此外,如果它很重要,如果我尝试infocmp远程机器,我得到:

>infocmp
infocmp: couldn't open terminfo file /usr/share/terminfo/e/eterm-color.
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

unix emacs terminal emacs24 ansi-term

8
推荐指数
1
解决办法
2424
查看次数