小编Dan*_*age的帖子

在fortran90中智能打印整数

几年前,我在简要介绍Fortran77之后,正在学习Fortran90.在Fortran中打印整数时,必须指定要为打印整数保留的空格数.考虑这个程序......

implicit none

integer :: i
i = 123

write(*, '(A, I3, A)')  "'", i, "'"  !3 spaces for output = no padding
write(*, '(A, I5, A)')  "'", i, "'"  !5 is too many, so output is padded
write(*, '(A, I2, A)')  "'", i, "'"  !2 is too few, so output is jibberish
write(*, '(A, I:, A)')  "'", i, "'"  !Default behavior

end program
Run Code Online (Sandbox Code Playgroud)

...生成以下输出.

'123'
'  123'
'**'
'         123'
Run Code Online (Sandbox Code Playgroud)

当我不知道整数中有多少位数时,如何为整数打印分配正确的空间量?

更新:如果您的编译器符合F95,您可以使用I0编辑描述符(即,在上面的示例'(A, I0, A)'中为 …

format fortran fortran90 fortran95

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

制作:.DELETE_ON_ERROR用于目录目标

GNU Make包含一个称为的特殊目标.DELETE_ON_ERROR。如果您的Makefile中包含此文件,Make将删除其构建序列以非零返回状态完成的任何目标。这很有用,因此在以后的调用中,Make不会假定目标已正确构建。

这是一个虚拟的例子。

.DELETE_ON_ERROR:

out.dat:    in.dat
            touch out.dat
            false
Run Code Online (Sandbox Code Playgroud)

因为false给出的返回值非零,所以构建被视为失败,并且Make删除了out.dat目标。这是广告和预期的行为。但是,当目标是目录时,似乎不会保留此行为。考虑另一个虚拟的例子。

.DELETE_ON_ERROR:

outdir/:    in.dat
            mkdir outdir/
            false
Run Code Online (Sandbox Code Playgroud)

在这种情况下,构建会再次失败,但是Make不会删除outdir目录。有什么方法可以指示Make进行此操作吗?

makefile gnu-make

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

Python中配对列表的随机样本

我有两个列表xy,长度为n,x iy i形成一对.如何在保留配对信息的同时从这两个列表中随机抽取m个值(例如x [10]和y [10]将在结果样本中一起)

我最初的想法是这样的.

  • 使用zip创建元组列表
  • 随机播放元组列表
  • 从列表中选择前m个元组
  • 将元组分解为新的配对列表

代码看起来像这样.

templist = list()
for tup in zip(x, y):
    templist.append(tup)
random.shuffle(templist)
x_sub = [a for a, b in templist[0:m]]
y_sub = [b for a, b in templist[0:m]]
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎很狡猾.有什么方法可以让我更清晰,更简洁,还是Pythonic?

python random-sample

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

如何在R中划分一组值(向量)

我在用R.编程.我有一个包含,比如1000个值的向量.现在让我们说我想将这1000个值随机分成两个新的集合,一个包含400个值,另一个包含600个.我怎么能这样做?我想过做这样的事......

firstset <- sample(mydata, size=400)
Run Code Online (Sandbox Code Playgroud)

...但是这不会对数据进行分区(换句话说,我仍然不知道要在另一组中放入哪600个值).我还想过从1到400的循环,一次随机删除1个值并将其放入firstset.这会正确地划分数据,但是如何实现这一点对我来说并不清楚.另外,我被告知尽可能避免forR中的循环.

有任何想法吗?

r vector set data-partitioning

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

Java Webstart应用程序的内存分配

我正在使用名为BLAST2GO的Java webstart应用程序,我遇到内存分配问题.它需要将大型数据集加载到内存中,所以我一直在尝试为此应用程序分配3-6GB.但是,无论我设置为最大堆大小,它总是使用455MB(如消息栏所示:'内存使用:xxMB为455MB').我已经尝试将其设置为非常合理的级别(1024 MB),但仍然只有455MB的分配.

有任何想法吗?

顺便说一下,我正在使用Ubuntu 10.04 32位,24GB内存,8个触发器.

更新:这是他们提供的JNLP.当我编辑initial-heap-sizemax-heap-size属性的值时,我得到相同的结果.

<jnlp spec="1.0+" codebase="http://bioinfo.cipf.es/blast2go/webstart" href="http://bioinfo.cipf.es/blast2go/webstart/makeJnlp.php?mem=3072">
<information>
<title>Blast2GO 3072M</title>
<vendor>CIPF - UPV - IVIA</vendor>
<homepage href="http://www.blast2go.org"/>
<description>Blast2GO 3072M</description>
<description kind="short">Blast2GO 3072M</description>
<icon href="splash.gif"/>
<offline-allowed/>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.5+" initial-heap-size="64m" max-heap-size="3072M"/>
<jar href="ext/blast2go.jar"/>
<jar href="ext/biojava-1.3.1.jar"/>
<jar href="ext/jfreechart-1.0.10.jar"/>
<jar href="ext/mysql-connector-java-3.0.11-stable-bin.jar"/>
<jar href="ext/zvtm.jar"/>
<jar href="ext/jakarta-regexp-1.4.jar"/>
<jar href="ext/jcommon-1.0.13.jar"/>
<jar href="ext/Simpat1.1.jar"/>
<jar href="ext/iText-2.1.1.jar"/>
<jar href="ext/jdom/activation.jar"/>
<jar href="ext/jdom/ant.jar"/>
<jar href="ext/jdom/jaxen-core.jar"/>
<jar href="ext/jdom/jaxen-jdom.jar"/>
<jar href="ext/jdom/jdom.jar"/>
<jar href="ext/jdom/mail.jar"/>
<jar href="ext/jdom/saxpath.jar"/>
<jar href="ext/jdom/xalan.jar"/> …
Run Code Online (Sandbox Code Playgroud)

java memory java-web-start

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

在P中的popen表现

我正在设计一个我计划在C中实现的程序,我对调用外部程序的最佳方式(在性能方面)有疑问.用户将为我的程序提供文件名,然后我的程序将以该文件作为输入运行另一个程序.然后我的程序将处理另一个程序的输出.

我的典型方法是将其他程序的输出重定向到一个文件,然后让我的程序在完成后读取该文件.但是,据我所知,I/O操作非常昂贵,我希望尽可能提高这个程序的效率.

我做了一点看,我找到了popen运行系统命令和抓取输出的命令.这种方法的性能与我刚才描述的方法的性能相比如何?是popen简单地将外部程序的输出写入临时文件,还是将程序输出保存在内存中?

或者,是否有其他方法可以提供更好的性能?

c performance system popen

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

从庞大的列表中进行高效的随机抽样

我有一个包含大量值(53,000,000+)的数据文件,我想提取这些值中n 个的随机子集(例如 2,000,000)。我实现了一个 Perl 脚本,它将列表拉入内存,使用Fisher-Yates 方法对数组进行洗牌,然后打印出洗牌列表中的前n个值。然而,即使在较小的测试集(50,000 个值)上,这种改组过程也需要花费大量时间。

我正在寻找一种更有效、可扩展的方法来识别大量值的随机子集并将其打印出来。有什么建议么?

更新:根据答案和更多搜索,看起来正确的术语是“随机采样”。

random performance sampling

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

随机抽样长度为k的非重叠子串

给定一个长度为n的字符串,我将如何(伪)随机采样大小为k的m个子串,使得所有采样的子串都不重叠?我的大部分脚本编写经验都在Perl中,但是使用任何通用语言的易于运行的解决方案就足够了.

python string random perl sample

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

read.table函数和stdin

我有一个制表符分隔的文本文件,我试图用该read.table函数加载到R中.脚本的前几行看起来像这样

#!/usr/bin/env Rscript
args <- commandArgs(trailingOnly=TRUE)
data <- read.table(args[1], header=TRUE, sep="\t", quote="")
# process the data
Run Code Online (Sandbox Code Playgroud)

这有效.我最初试图让R从标准输入读取数据,但是没有成功.我的第一个方法......

#!/usr/bin/env Rscript
data <- read.table(stdin(), header=TRUE, sep="\t", quote="")
# process the data
Run Code Online (Sandbox Code Playgroud)

......似乎根本没用.我的第二种方法......

#!/usr/bin/env Rscript
data <- read.table("/dev/stdin", header=TRUE, sep="\t", quote="")
# process the data
Run Code Online (Sandbox Code Playgroud)

...读取数据文件,但(由于某种原因,我不明白)前20行左右被破坏,这是一个大问题(特别是因为这些行包含标题信息).有没有办法read.table从标准输入读取?我错过了一些完全明显的东西吗

stdin r

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

将 C++ 扩展标头与 Python 包源代码分发捆绑在一起

我正在为 C++ 库编写 Cython 包装器,我想将其作为 Python 包分发。我已经想出了我的包的虚拟版本,如下所示(完整源代码在这里)。

\n\n
$ tree\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bogus.pyx\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 inc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 bogus.hpp\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setup.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 bogus.cpp\n$\n$ cat inc/bogus.hpp \n#ifndef BOGUS\n#define BOGUS\n\nclass bogus\n{\nprotected:\n    int data;\n\npublic:\n    bogus();\n    int get_double(int value);\n};\n\n#endif\n$\n$ cat src/bogus.cpp \n#include "bogus.hpp"\n\nbogus::bogus() : data(0)\n{\n\n}\n\nint bogus::get_double(int value)\n{\n    data = value * 2;\n    return data;\n}\n$ cat bogus.pyx \n# distutils: language = c++\n# distutils: sources = src/bogus.cpp\n# cython: c_string_type=str, c_string_encoding=ascii\n\ncdef extern from \'bogus.hpp\':\n    cdef cppclass bogus:\n        bogus() except +\n        int get_double(int value)\n\ncdef class Bogus:\n    cdef bogus b\n    def get_double(self, …
Run Code Online (Sandbox Code Playgroud)

python packaging python-extensions python-packaging

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