小编Iva*_*ets的帖子

如何从脚本运行IPython魔术(或定时Python脚本)

IPython%timeit magic命令可以很好地测量运行某些Python代码所需的时间.现在,我想在Python脚本中使用类似的东西.我知道timeit模块,但它有几个缺点,例如,如何自适应地选择运行次数?即默认代码

import timeit
t=timeit.Timer("code(f)", "from __main__ import code,f")
t.timeit() 
Run Code Online (Sandbox Code Playgroud)

运行代码数百万次.%timeit IPyhton magic命令会自动执行此操作.我建议我可以使用MATLAB代码 http://www.mathworks.com/matlabcentral/fileexchange/18798

自动完成所有工作(并且还告诉函数的开销是否很大).

如何从Python脚本中调用%timeit magic(或者可能有更好的时序解决方案)?

python ipython

48
推荐指数
2
解决办法
3万
查看次数

如何在emacs组织模式中插入当前时间

是否有一种简单的方法可以在组织模式中插入当前时间(如TIME:[2012-07-02 Mon 16:44])?在手册中有很多东西(时钟,截止日期,时间表),但大多数都需要手动输入时间.

emacs org-mode

20
推荐指数
4
解决办法
7673
查看次数

Mac OS X上的wxPython 2.9

我正在使用Enthought Python Distribution(7.2,64位).它没有wxPython(这非常重要).但是,wxPython-2.9似乎支持64位Cocoa接口,所以我试了一下.实际上,这一切都很顺利:命令

python build-wxpython.py --osx_cocoa --mac_framework --install
Run Code Online (Sandbox Code Playgroud)

成功编译,甚至进入EPD网站包.但是,一个简单的wxPython代码

import wx
wx.App()
Run Code Online (Sandbox Code Playgroud)

失败,出现以下错误:

This program needs access to the screen.
Please run with a Framework build of python, and only when you are
logged in on the main display of your Mac.
Run Code Online (Sandbox Code Playgroud)

你能给我一些如何治愈的建议吗?EPD显然是一个Python框架(即,查看/Library/Frameworks/EPD64.framework和/L​​ibrary/Frameworks/Python.framework让我信服它)但是这个wxPython构建并不知道.wxPython的版本是2.9.3.1

python wxwidgets enthought

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

org-mode latex导出中的多个作者

我在Emacs的org-mode中编写了很多文件,非常棒.我开始在组织模式下写科学论文.但是:这篇文章有几位作者.

我用了

#+AUTHOR: Author 1, Author 2
Run Code Online (Sandbox Code Playgroud)

它正确地输出到Latex.

但是,我需要作者的电子邮件和机构.我可以直接在组织模式下进行吗?

命令

#+EMAIL: email1, email2 
Run Code Online (Sandbox Code Playgroud)

挑选最后一个.

emacs latex org-mode

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

Fortran分配/解除分配

我有以下问题:Fortran90 +中的allocate/deallocate语句的实际开销是多少?即,在循环内部分配了几个中型数组,如

do i = 1, 1000
    allocate(tmp(20))
    tmp(1:20) = 1d0
    call foo(tmp)
    deallocate(tmp)
end do 
Run Code Online (Sandbox Code Playgroud)

在这种情况下,是否值得根据最大大小分配单个工作数组?

performance fortran memory-management

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

Numpy distutils howto

我花了将近一个小时来搜索解决方案,但numpy.distutils的文档非常稀疏.

我有一个f2py包装的模块.它基本上由3个文件组成:

a.f90
a.pyf
lib.a <- this is a static library that contains most of the computational code
Run Code Online (Sandbox Code Playgroud)

使用以下shell-script命令很好地编译该模块.

f2py --build-dir temp -c a.pyf a.f90 lib.a --fcompiler=gnu95   
--fcompiler-flags="Zillions of compiler options"
Run Code Online (Sandbox Code Playgroud)

结果,我有python模块a.so(名称在.pyf文件中指定).

我如何使用numpy.distutils(或其他一些面向python的构建工具)来做到这一点?一个不太重要的问题是,我是否还可以包含lib.a的依赖(并在必要时重建它?)

python distutils numpy f2py

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

python中函数的自适应绘图

一个简单的问题:我有一个函数f(t),它应该在[0,1]的某个点上有一些尖峰.一个自然的想法是使用此功能的自适应采样来获得一个很好的"自适应"图.我怎么能在Python + matplotlib + numpy +中以快速的方式做到这一点?我可以为[0,1]上的任何t计算f(t).

似乎Mathematica有这个选项,Python有一个吗?

python plot matplotlib

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

如何为octopress博客安装jekyll插件?

我最近发现了很好的Octopress和Jekyll框架,我将把我的主页从wordpress切换到octopress(这是很好的记录).但是,我很想在octopress上添加几个插件.例如,生成参考书目的那个.Jekyll有几个插件用于执行此操作(例如,https://github.com/inukshuk/jekyll-scholar)

但是,我无法使它成为一个章鱼网站的功能;
我试着按照安装说明,而不是jekyll插件目录使用octopress插件目录; 它没有成功.

任何人都可以向我提供一般说明如何为简单的章鱼博客安装jekyll插件(jekyll-scholar的例子就足够了).

jekyll octopress

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

奇怪的链接行为和未定义的符号

我正在链接一个外部库(通过wierd进程,mpicc + Cython +等),但我有一个奇怪的链接过程行为.

有两个.o文件,libpetsc4py.o和PETSc.o它们被链接到一个.so文件PETSc.so

一个包含一个未定义的符号 __pyx_tp_new_8petsc4py_5PETSc_Object

[zheltkov@compiler-2 src]$ nm libpetsc4py.o | grep __pyx_tp_new_8petsc4py_5PETSc_Object
                       U __pyx_tp_new_8petsc4py_5PETSc_Object
Run Code Online (Sandbox Code Playgroud)

它在另一个.o文件中定义:

[zheltkov@compiler-2 src]$ nm PETSc.o | grep __pyx_tp_new_8petsc4py_5PETSc_Object
00000000001b92f0 t __pyx_tp_new_8petsc4py_5PETSc_Object
Run Code Online (Sandbox Code Playgroud)

然后,完成链接(编译行很奇怪,对不起)

mpicc -pthread -fPIC -wd1572 -g -shared -fno-strict-aliasing -g -O2 -DNDEBUG -O2 -g
build/temp.linux-x86_64-2.7/arch-linux2-c-debug/src/PETSc.o build/temp.linux-x86_64-
2.7/arch-    linux2-c-debug/src/libpetsc4py.o -L/home/users/zheltkov/tmp/petsc-3.3/arch
-linux2-c-debug/lib -L/home/users/zheltkov/ivan/soft/epd7.2/lib 
-Wl,rpath,/home/users/zheltkov/tmp/petsc-3.3/arch-linux2-c-debug/lib 
-Wl,-rpath,/home/users/zheltkov/ivan/soft/epd7.2/lib -lpetsc -lpython2.7 -o
build/lib.linux-x86_64-2.7/petsc4py/lib/a    rch-linux2-c-debug/PETSc.so -lX11 -Wl,
-rpath,/home/users/zheltkov/tmp/petsc-3.3/arch-linux2-c-debug/lib 
-L/home/users/zheltkov/tmp/petsc-3.3/arch-linux2-c-debug/lib -lfftw3_mpi -lfftw3 -lHYPRE 
-Wl,-rpath,/opt/intel/impi/4.1.0.030/intel64/lib 
-L/opt/intel/impi/4.1.0.030/intel64/lib -Wl,
-rpath,/opt/intel/composer_xe_2013.2.146/mkl/lib/intel64 
-L/opt/intel/composer_xe_2013.2.146/mkl/lib/intel64 
-Wl,-rpath,/opt/intel/composer_xe_2013.2.146/compiler/lib/intel64 
-L/opt/intel/composer_xe_2013.2.146/compiler/lib/intel64 -Wl,
-rpath,/usr/lib/gcc/x86_64-redhat-linux/4.4.6 -L/usr/lib/gcc/x86_64-redhat-linux/4.4.6 
-Wl,- rpath,/mnt/data/users/dm4/vol9/zheltkov/tmp/petsc-3.3/-Xlinker -lmpigc4 
-Wl,-rpath,/opt/intel/mpi-rt/4.1 -lml -lpthread -Wl,-rpath,
/opt/intel/composer_xe_2013/mkl/lib/intel64 
-L/opt/intel/composer_xe_2013/mkl/lib/intel64 …
Run Code Online (Sandbox Code Playgroud)

c linux icc nm

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

Python/Cython/C和回调,使用Cython从C调用Python函数

我有以下问题.我们必须将回调函数传递给C代码.如果该函数是同一模块中的Cython函数,则情况非常简单

在Cython中:

def callme(int x):
    c_callme(x, <int (*)(int)>&callbackme) 

cdef int callbackme(int x):
    print <int> x
    return <int>x
Run Code Online (Sandbox Code Playgroud)

在C:

int c_callme(int x, int (*f)(int))
{
    printf("---%d\n",x);
    printf("--%d\n",f(x));
    return x;
}
Run Code Online (Sandbox Code Playgroud)

问题如下:我们希望以最Pythonic的方式推广这个代码,以便它也可以接受python函数作为回调参数(当然,还需要一些额外的层),以及来自另一个模块的C/Cython函数.我想,对于来自单独模块的C/Cython函数,必须获取这些函数的地址(转换为long int?),对于Python函数,需要某个包装器

c python function callback cython

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

Numpy数组,花式索引,复数

以下代码将数组的一部分乘以数字

def mul_by_num(a,b):
    a[0:2] *= b


import numpy as np
a = np.ones(5,dtype=np.float64)
mul_by_num(a,1.0)
mul_by_num(a,1j) #Generates a warning (and casts to float!)
Run Code Online (Sandbox Code Playgroud)

第二个调用会生成警告

-c:2: ComplexWarning: Casting complex values to real discards the imaginary part
Run Code Online (Sandbox Code Playgroud)

问题是,在没有混淆dtypes的情况下,通过复数/实数乘以numpy数组的部分的最pythonic方法是什么?我真的不想从一开始就将数组转换为复数,但原则上该程序可以获得复杂的输入.

编辑:

我不关心复制整个阵列,把它复制到复杂的阵列; 但我想避免检查dtypes(即np.float32,np.float64,np.complex,np.int等)

python numpy

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

在python中定义"重载"函数

我非常喜欢"魔术方法"的语法或者在Python中调用的任何语法,比如

class foo:
    def __add__(self,other): #It can be called like c = a + b
        pass
Run Code Online (Sandbox Code Playgroud)

电话

c = a + b
Run Code Online (Sandbox Code Playgroud)

然后被翻译成

a.__add__(b)
Run Code Online (Sandbox Code Playgroud)

是否有可能模仿"非魔法"功能的这种行为?在数值计算中,我需要Kronecker产品,并且渴望拥有"kron"功能

kron(a,b) 
Run Code Online (Sandbox Code Playgroud)

实际上是

a.kron(b)?
Run Code Online (Sandbox Code Playgroud)

用例是:我有两个类似的类,比如,矩阵和向量,都有Kronecker产品.我想打电话给他们

a = matrix()
b = matrix()
c = kron(a,b)

a = vector()
b = vector()
c = kron(a,b)
Run Code Online (Sandbox Code Playgroud)

矩阵和向量类在一个.py文件中定义,因此共享公共命名空间.那么,实现上述功能的最佳(Pythonic?)方式是什么?可能的解决方案:

1)有一个kron()函数并进行类型检查

2)具有不同的名称空间

3)?

python multiple-dispatch magic-methods

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