Questions tagged «python»

一种通用的高级编程语言,着重于简化代码语法和可读性。

17
是否有适用于Python的高质量非线性编程求解器?
我要解决几个具有挑战性的非凸全局优化问题。目前,我使用了MATLAB的Optimization Toolbox(特别是fmincon()使用algorithm = 'sqp'),它非常有效。但是,我的大部分代码是在Python中进行的,我也想在Python中进行优化。是否存在可以与Python绑定竞争的NLP求解器fmincon()?它必须 能够处理非线性等式和不等式约束 不需要用户提供雅可比行列式。 如果不保证全局最优(fmincon()没有),也可以。我正在寻找一种即使在遇到挑战性问题时也可以收敛到局部最优的东西,即使它比慢一些fmincon()。 我尝试了OpenOpt提供的几种求解器,发现它们不如MATLAB的fmincon/sqp。 只是为了强调,我已经有了一个易于处理的公式和一个好的求解器。我的目标仅仅是更改语言,以使工作流程更加简化。 Geoff指出问题的某些特征可能是相关的。他们是: 10-400个决策变量 4-100个多项式相等约束(多项式范围从1到大约8) 有理不等式约束的数量大约等于决策变量数量的两倍 目标函数是决策变量之一 等式约束的雅可比行列是密集的,不等式约束的雅可比行列是密集的。

7
在Python中并行化for循环
Python中是否有任何类似Matlab parfor的工具?我找到了这个线程,但是已经有四年了。我认为也许有人在这里可能有更多的近期经验。 这是我要并行化的事物类型的示例: X = np.random.normal(size=(10, 3)) F = np.zeros((10, )) for i in range(10): F[i] = my_function(X[i,:]) where my_function取一个ndarraysize (1,3)并返回一个标量。 至少,我想同时使用多个内核,例如parfor。换句话说,假设具有8到16核的共享内存系统。


8
科学的工作流程管理系统
谁能推荐我一个好的工作流程管理系统(WMS),最好使用Python?到目前为止,我一直在使用GNU Make,但是它引入了一层我想避免的复杂性。一个好的WMS应该具有以下功能: 与命令行工具和Python脚本轻松集成, 简单易用,重量轻, 处理依赖关系 提供命令行界面, 提供日志记录机制, (可选)提供数据来源。 我知道WMS在生物信息学中非常流行(例如Galaxy),但是我正在寻找更通用的东西。
30 software  python 

4
有哪些工具或方法可用来加快用Python编写的代码的速度?
背景:我想我可能想移植一些使用Krylov子空间方法从MATLAB到Python来计算矩阵指数矢量乘积的代码。(具体来说,是Jitse Niesen的expmvp函数,该函数使用本文中介绍的算法。)但是,我知道,除非我大量使用了来自编译库的模块中的函数(即,我仅使用原始Python,并且没有很多内置的Python代码,在功能上),那么它可能会很慢。 问题:哪些工具或方法可用来帮助我加快用Python编写的代码的性能?特别是,我对使流程尽可能自动化的工具感兴趣,尽管也欢迎使用一般方法。 注意:我有一个较旧版本的Jitse算法,并且已经有一段时间没有使用它了。快速编写此代码可能很容易,但是我觉得它可以成为一个很好的具体示例,并且与我自己的研究有关。辩论我在Python中实现此特定算法的方法完全是另一个问题。

9
什么是在C ++中运行参数研究的好方法
问题 我目前正在进行有限元Navier Stokes仿真,并且我想研究各种参数的影响。在输入文件中或通过命令行选项指定了一些参数。其他参数在Makefile中作为标志提供,因此每当我更改这些选项时,都必须重新编译我的代码。我很想获得一些有关系统地探索参数空间的好方法的建议。 是否有有用的C ++ / Python库/框架可以帮助解决此类问题?例如,发现boost.Program_options很有帮助,因为可以使用命令行参数来重载输入文件选项。我还看到有人使用工作文件非常有效地描述每种情况,并且一位同事建议将参数作为注释块写入vtu文件也可以工作。 也许根本不值得花很多时间在这上面吗?只是分散注意力和时间流失,最好只是通过测试过程中的蛮力和特设肌肉吗? 一些想法 我目前主要是手工做事,遇到以下问题: 命名测试用例。我尝试将结果存储在以运行参数命名的文件夹中,并用下划线将其分隔,例如Re100_dt02_BDF1...。如果缩写太多,它们很快就会变长或难以阅读/难以理解。另外,实数参数包括.尴尬/丑陋的a。 记录运行数据。有时我希望看到结果写入终端并也保存到文本文件中。例如,来自StackOverflow的答案有些帮助,但解决方案似乎有点麻烦。 根据参数绘制数据。从各种日志文件中收集相关数据需要花费一些时间,然后我可以将其绘制到一个文件中,如果使用更好的系统,这也许会变得更容易。 记录有关数据的注释。检查结果后,我在文本文件中写了一些注释,但要使其与结果文件夹保持同步有时很困难。

5
在numpy中就地置换矩阵
我想通过使用python的numpy库更改其若干行和列的顺序来就地修改密集的正方形转换矩阵。从数学上讲,这对应于将矩阵乘以置换矩阵P并将其乘以P ^ -1 = P ^ T,但这并不是计算合理的解决方案。 现在,我正在手动交换行和列,但是我希望numpy有一个不错的函数f(M,v),其中M具有n行和列,而v具有n项,以便f(M,v)更新M根据索引排列v。也许我只是在搜索互联网上失败了。 numpy的“高级索引”可能会发生这种情况,但是我的理解是这样的解决方案不会就位。同样,对于某些简单情况,仅跟踪索引排列可能就足够了,但是在我的情况下这并不方便。 补充: 有时当人们谈论排列时,它们仅表示对随机排列进行采样,例如,这是在统计中获取p值的过程的一部分。或者,它们的意思是计数或枚举所有可能的排列。我不是在谈论这些事情。 补充: 矩阵足够小以适合桌面RAM,但又足够大,我不想深思熟虑地复制它。实际上,我想使用尽可能大的矩阵,但我不想处理无法将其保存在RAM中的不便,并且我会对矩阵执行O(N ^ 3)LAPACK运算,这也会限制实际矩阵的大小。我目前不必要地复制这么大的矩阵,但我希望可以很容易地避免这种排列的情况。

8
我应该使用哪个软件包用Python包装现代Fortran代码?
我知道,并且已经使用f2py2e封装了一些旧的Fortran 77代码,但是我的理解是它不适用于更新的Fortran 95代码。我研究了我应该使用的东西,并且碰到了fwrap和G3 f2py,它们似乎都没有给出关于它们当前状态或使用方式的任何解释(除了基本用法之外)。 我还看到f2py版本可以选择使用第三代f2py,但是它被评论为不起作用。鉴于此,我不知道应该为uni项目使用哪个项目。我应该为新代码使用哪一个? PS这基本上是与/programming/10665717/current-best-method-for-wrapping-modern-fortran-code-with-python相同的问题,建议在这里提问可能会提供更好的答案。
27 python  fortran 

5
在教计算机编程本科课程时,我应该使用哪种语言?
打算教本科生一门名为“计算机编程入门”的课程。我有点困惑。在计算物理学中,科学家使用C / C ++或Python或Fortran,CUDA等。...现在是时候建立自己的基础了。我应该使用什么?我知道您可以在自己的生活中随时学习新的编程语言,但是对我来说,以后再详细介绍所有基本编程概念和OOP概念是一个明智的选择。

1
插补多维数据的首选和有效方法是什么?
插补多维数据的首选和有效方法是什么? 我担心的事情: 性能和构造记忆,单次/批处理评估 处理尺寸从1到6 线性或高阶 获得梯度的能力(如果不是线性的) 常规与分散网格 用作插值函数,例如查找根或最小化 外推能力 是否有有效的开源实现? 我对scipy.interpolate和来自scikit-learn的kriging感到幸运。 我没有尝试样条曲线,切比雪夫多项式等。 到目前为止,我在该主题上发现了以下内容: 矩形网格上的Python 4D线性插值 快速插值定期采样的3D数据(在x,y和z中具有不同的间隔) 快速插值常规网格数据 哪种多元分散插值方法最适合实际使用?

1
Python / Numpy数组运算的性能如何随着数组尺寸的增加而缩放?
Python / Numpy数组如何随着数组尺寸的增加而缩放? 这是基于我在对这个问题进行Python代码基准测试时发现的一些行为:如何使用numpy slices表达这种复杂的表达式 问题主要涉及索引以填充数组。我发现在Python循环上使用(不太好)Cython和Numpy版本的优势因涉及的数组大小而异。Numpy和Cython都在一定程度上提高了性能优势(在我的笔记本电脑上,Cython 大约为,Numpy 大约为N = 2000),之后它们的优势下降了(Cython功能仍然是最快的)。N=500N=500N=500N=2000N=2000N=2000 是否定义了此硬件?在处理大型阵列方面,对于那些对性能表现满意的代码,应该遵循哪些最佳实践? 这个问题(为什么我的矩阵向量乘法缩放不为什么?)可能是相关的,但是我有兴趣了解更多有关Python处理数组的不同方式如何相对缩放的信息。

3
科学Python中有限差分法的建议
对于我正在研究的项目(在双曲PDE中),我希望通过查看一些数字来大致了解行为。但是,我不是一个很好的程序员。 您是否可以推荐一些资源来学习如何在Scientific Python中有效地编码有限差分方案(也欢迎其他学习曲线较小的语言)? 为了让您了解此建议的受众群体(我): 我是经过培训的纯数学家,并且对有限差分方案的理论知识有些熟悉 我需要帮助的是如何使计算机计算出我想要的计算量,特别是以一种方式,我不会重复别人已经付出的太多努力(以免在需要时重新发明轮子)包已可用)。(我想避免的另一件事是,在建立了适合该目的的数据结构时,手动编写一些愚蠢的代码。) 我有一些编码经验;但是我没有使用Python的知识(因此我不介意是否有足够的资源来学习其他语言(例如,例如Octave))。 书籍,文档以及示例代码的集合都将是有用的。

2
在Python中定义自定义概率密度函数
有没有一种方法,可以使用一些已建立的Python程序包(例如SciPy)来定义我自己的概率密度函数(没有任何先验数据,只需),然后我就可以用它进行计算(例如获得连续随机变量的方差)?当然,我可以使用SymPy或Sage创建一个符号函数并执行操作,但是我想知道是否可以代替使用我自己已经完成的软件包而不是自己完成所有这些工作。f(x)=ax+bf(x)=ax+bf(x) = a x + b

2
具有可分配和假定形状数组的F2Py
我想f2py与现代Fortran 一起使用。特别是,我试图使以下基本示例正常工作。这是我可以生成的最小的有用示例。 ! alloc_test.f90 subroutine f(x, z) implicit none ! Argument Declarations ! real*8, intent(in) :: x(:) real*8, intent(out) :: z(:) ! Variable Declarations ! real*8, allocatable :: y(:) integer :: n ! Variable Initializations ! n = size(x) allocate(y(n)) ! Statements ! y(:) = 1.0 z = x + …
18 python  fortran 

5
并行科学计算软件开发语言?
我想从头开始开发并行科学计算软件。我想开始使用哪种语言。该程序涉及将数据读/写到txt文件中,并并行进行大量计算,并具有许多LU分解和使用稀疏线性求解器的功能。我在考虑的候选解决方案是带有OpenMP或协同阵列的Fortran 2003/2008,带有openmp cilk +或TBB的C ++,python。任何其他有文件记录的建议,我们都欢迎!我非常了解C,Fortran和Java(按此顺序)。我已经在python中完成了一些脚本编写工作,但是基本的东西。 我知道fortran很快,但是很难维护和并行化。据说C ++运行缓慢,除非您使用外部库等我喜欢的Python,但是在其上编写全面的工业级软件是否现实? 该软件需要能够处理大量数据并通过科学计算有效。性能至关重要。 对于背景,我已经有一个用Fortran编写的工作软件。许多人参与了很多年的开发,并且代码真的很脏。维护和并行化代码被证明是一场噩梦,我正在考虑其他选择。 佩特罗斯

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.