小编hat*_*rix的帖子

不从Python模块导出函数

如果我有一个foo.py包含以下内容的模块/文件:

from math import sqrt

def foo():
    pass
Run Code Online (Sandbox Code Playgroud)

如果我在另一个脚本中导入它,sqrt也会在模块中定义foo.

import foo    
dir(foo)
Run Code Online (Sandbox Code Playgroud)

其输出是

[..., # other things
 'foo',
 'sqrt']
Run Code Online (Sandbox Code Playgroud)

我该如何防止这种情况?即,要么指定sqrt不导出,要么只导出特定功能 - 在这种情况下,只导出用户定义的功能.我知道对于用户定义的函数,你可以通过在下划线前加上私有地在模块中定义它们,但在这种情况下它不是用户定义的函数,所以我不能用下划线前缀来定义它.

python

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

使用适合数值计算的日期/时间类,也可以作为合并的关键

我正在处理一些昼夜时间序列,其中时间必须表示为几分钟.

在各种工具中,一些日期/时间类从epoch开始表示为整数(例如,R的POSIX类,Python/Numpy); 其他的是自纪元以来的分数天(例如,R的chron包,也是Matlab).

似乎整数表示允许您执行数值计算(求和,差异),但ALSO提供了一种通过它们进行合并/匹配的方法,而对于那些由小数天(浮点数)表示的那些更难以按时间合并/匹配.

这更像是一个概念性的问题,但是有一个很好的理由使用小数天或花车进行时间表示吗?对于R,奇怪的是,甚至POSIX类都是数字而不是整数.

> (p <- as.POSIXct("2011-01-01"))
[1] "2011-01-01 CST"
> (unclass(p <- as.POSIXct("2011-01-01")))
[1] 1293861600
attr(,"tzone")
[1] ""
> class(unclass(p <- as.POSIXct("2011-01-01")))
[1] "numeric"
Run Code Online (Sandbox Code Playgroud)

这是因为R的早期整数存储限制?或者使用浮点表示还有其他一些优势吗?要合并我将我的日期/时间对象转换为格式化的字符串,但这是规范的方式(我最常使用chronR中的包)?

datetime r

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

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

从数据框中提取值?

如果我有数据框,提取值的标准方法是使用布尔/逻辑表达式来匹配正确的行和列.例:

set.seed(1)
df <- data.frame(letters = letters[1:3], numbers = as.character(c(1, 2, 1)), value=rnorm(3))
subset(df, letters=="c" & numbers=="1")$value
[1] -0.8356286
Run Code Online (Sandbox Code Playgroud)

然而,将许多==陈述串联在一起似乎有些笨拙.另一种方法是使用行名作为键:

Key <- function(...) paste(..., sep="%") # this could be any formatting
row.names(df) <- with(df, Key(letters, numbers))
df[Key("c", "1"), "value"]
[1] -0.8356286
Run Code Online (Sandbox Code Playgroud)

在tidyverse中,不鼓励使用行名称 - 匹配和提取值的推荐方法是什么?

r dataframe tidyverse

5
推荐指数
0
解决办法
1402
查看次数

Emacs 23,emacsclient参数?

我最近安装了Emacs 23(在OS X Leopard上)并试用了emacs服务器.我尝试了两种方法:(1)将(server-start)放入我的.emacs文件中,以及(2)在终端上运行emacs --daemon(在单独的试验中;不在同一时间).在任何一种情况下,当我已经打开emacs框架并尝试使用emacsclient -t,-tty或-nw在OS X终端中打开单独的文件时,该文件始终在现有框架中打开,而不是在终端中打开描述:

http://www.gnu.org/software/emacs/manual/html_node/emacs/emacsclient-Options.html

http://emacs-fu.blogspot.com/2009/02/emacs-daemon.html

但是,emacsclient -c按预期工作.你对可能发生的事情有什么想法吗?

非常感谢!-Stephen

emacs emacs23

4
推荐指数
2
解决办法
4138
查看次数

J的独特功能有哪些?

我来自C,Fortran,Python,R,Matlab和一些Lisp的背景 - 我在Haskell上读过一些东西.JL或APL家族其他语言中有哪些简洁的想法/例子是独特的,而不是用更常见的语言实现的?我总是有兴趣找出我所缺少的东西......

j apl tacit-programming

4
推荐指数
2
解决办法
585
查看次数

多面板时间序列的线条和填充轮廓使用matplotlib?

如果我想制作如下所示的组合图像(原始来源),你能指出我需要组装的matplotlib对象吗?我一直在尝试使用AxesImage对象,我也下载了SciKits Timeseries - 但我是否需要这个,或者可以从时间模块中轻松使用strptime,mktime和strftime并滚动我自己的自定义轴?谢谢〜

替代文字

python matplotlib scipy

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

如何为ansi-term/multi-term加载别名和环境变量?

我是否必须设置类似.emacs.d/init_bash.sh(如shell模式),或者它可以~/.bash_profile直接读取我的内容吗?如果是后者,如何设置配置ansi-term/multi-term以在启动时自动获取此文件?

emacs

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

将16位整数转换为32位浮点

我试图将用不同语言编写的代码的一部分(一个名为Igor Pro的Wavemetrics,用于那些你已经听说过它的代码)移植到Python.

在此代码中,数据类型从16位整数(从16位大端二进制文件读入)转换为单精度(32位)浮点.在此计划中,转换如下:

有符号的16位整数:

print tmp
tmp[0]={-24160,18597,-24160,18597,-24160}
Run Code Online (Sandbox Code Playgroud)

转换为32位浮点:

Redimension/S/E=1 tmp
print tmp
tmp[0]={339213,339213,5.79801e-41,0,0}
Run Code Online (Sandbox Code Playgroud)

/S标志/选项表示的数据类型tmp应FLOAT32代替INT16.但是,我认为重要的标志/选项是/E=1,"强制重塑而不转换或移动数据".

在Python中,转换如下:

>>> tmp[:5]
array([-24160,  18597, -24160,  18597, -24160], dtype=int16)

>>> tmp.astype('float32')
array([-24160.,  18597., -24160., ...,  18597., -24160.,  18597.], dtype=float32)
Run Code Online (Sandbox Code Playgroud)

这是我的期望,但我需要找到一个模拟/E=1上面原始代码中的选项的函数/操作.是否有明显的方法将-24160和18597都转换为339213?这是否有什么关系byteswap或者newbyteorder还是别的什么?

python floating-point integer

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

为台式机和超级计算机编写的代码有什么区别?

假设,如果我的科学工作导致功能/模块/子程序(在桌面上)的开发,我需要知道将其纳入大型模拟中以在超级计算机上运行(可能模拟分子) ,液体,反应等)?

我的印象是,它可能与利用某些库(例如,BLAS,LAPLACK)尽可能,修改算法(减少迭代),分析,并行化,考虑内存 - 硬盘处理器使用/访问...我是意识到这句格言,"想要优化你的代码?不要这样做",但如果有人想学习编写有效的代码,那么可以提供哪些参考?

我认为这个问题与语言无关,但由于生物分子模拟,气候建模等许多数字运算包都是在某些版本的Fortran中编写的,因此这种语言可能是我感兴趣的目标(我在Fortran中进行了相当广泛的编程) 77).

memory optimization performance hpc grid-computing

4
推荐指数
3
解决办法
278
查看次数