タグ付けされた質問 「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の範囲の多項式次数) 決定変数の数の約2倍に等しい合理的な不等式制約の数 目的関数は決定変数の1つです 不等式制約のヤコビアンと同様に、等式制約のヤコビアンは密です。

7
Pythonでforループを並列化する
MatlabのparforのようなPythonのツールはありますか?このスレッドを見つけましたが、4年前です。ここの誰かが最近の経験を持っているかもしれないと思った。 並列化するタイプの例を次に示します。 X = np.random.normal(size=(10, 3)) F = np.zeros((10, )) for i in range(10): F[i] = my_function(X[i,:]) どこmy_function取りndarrayのサイズの(1,3)スカラを返します。 少なくとも、複数のコアを同時に使用したい--- parforのように。つまり、8〜16コアの共有メモリシステムを想定しています。


8
科学的ワークフロー管理システム
できればPythonで、優れたワークフロー管理システム(WMS)を勧められますか?これまでGNU Makeを使用してきましたが、避けたい複雑さの層が導入されています。優れたWMSには次の機能が必要です。 コマンドラインツールやPythonスクリプトと簡単に統合できます。 使いやすく軽量 依存関係を処理する、 コマンドラインインターフェースを提供し、 ロギングメカニズムを提供します。 (オプション)データの出所を提供します。 WMSはバイオインフォマティクス(Galaxyなど)で非常に人気があることは知っていますが、もっと一般的なものを探しています。
30 software  python 

4
Pythonで記述されたコードを高速化するために使用できるツールまたはアプローチは何ですか?
背景: Krylov部分空間法を使用して行列指数ベクトル積を計算するコードをMATLABからPythonに移植したいと思うかもしれません。(具体的には、この論文で説明されているアルゴリズムを使用するJitse Niesenのexpmvp関数。)ただし、コンパイル済みライブラリから派生したモジュールの関数を頻繁に使用しない限り(つまり、多くの組み込みのPython関数で)、それは非常に遅い可能性があります。 質問:パフォーマンスのためにPythonで記述したコードを高速化するのに役立つツールまたはアプローチはありますか?特に、プロセスを可能な限り自動化するツールに興味がありますが、一般的なアプローチも歓迎します。 注: Jitseのアルゴリズムの古いバージョンを使用していますが、しばらく使用していません。このコードを高速にするのは非常に簡単かもしれませんが、良い具体的な例になりそうで、自分の研究に関連しています。この特定のアルゴリズムをPythonで実装するための私のアプローチについては、まったく別の質問です。

9
C ++でパラメータースタディを実行する良い方法は何ですか
問題 現在、有限要素ナビエストークスシミュレーションに取り組んでおり、さまざまなパラメータの影響を調査したいと思います。一部のパラメーターは、入力ファイルまたはコマンドラインオプションで指定されます。他のパラメーターはMakefileでフラグとして提供されるため、これらのオプションを変更するたびにコードを再コンパイルする必要があります。パラメータ空間を体系的に探索するための良い方法についてアドバイスをもらいたいと思います。 この種のことを支援できる便利なC ++ / Pythonライブラリ/フレームワークはありますか?たとえば、コマンドライン引数で入力ファイルオプションをオーバーロードすることができるため、boost.Program_optionsを発見することは大きな助けになりました。また、一部の人々が各ケースを非常に効果的に説明するジョブファイルを使用しているのを見たことがあり、同僚はコメントブロックとしてパラメーターをvtuファイルに書き込むこともできると提案しました。 おそらく、これに多くの時間を投資する価値はまったくありませんか?それは単なる気晴らしと時間の浪費であり、テストプロセスのブルートフォースとアドホックを筋肉だけで行うのが最善ですか? いくつかの考え 私は現在ほとんど手作業で仕事をしており、次の問題に直面しています。 テストケースの命名。アンダースコアで区切られた実行パラメーターなどの名前のフォルダーに結果を保存しようとしましたRe100_dt02_BDF1...。これらは、省略しすぎるとすぐに長くなり、読みにくくなります。また、実数のパラメータにはa .が含まれていますが、これは厄介です。 実行データのロギング。時々、端末に書き込まれ、テキストファイルに保存された結果を確認したいことがあります。たとえば、StackOverflowからのこの回答は多少役立ちますが、解決策は少し煩わしいようです。 パラメータに従ってデータをプロットします。さまざまなログファイルから関連するデータを1つのファイルに収集し、それをプロットするのにかなり時間がかかります。より良いシステムであれば、おそらくこれがより簡単になります。 データに関するコメントの記録。結果を調べた後、テキストファイルにコメントを書き込みますが、これを結果フォルダーと同期させることは難しい場合があります。

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でModern Fortranコードをラップするには、どのパッケージを使用すればよいですか?
私は知っていて、f2py2eを使用して古いFortran 77コードをラップしましたが、私の理解では、新しいFortran 95コードでは機能しません。私は何を使うべきかを研究しましたが、fwrapとG3 f2pyに出会いましたが、どちらも現在の状態や基本的な使用法を超えた使用方法については説明していません。 また、f2pyのバージョンには第3世代のf2pyを使用するオプションがあることも確認しましたが、機能しないとコメントされています。これを考えると、私はどのプロジェクトをuniプロジェクトに使用すべきかわかりません。新しいコードにはどれを使うべきですか? PSこれは基本的にhttps://stackoverflow.com/questions/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からのクリギングで部分的な運がありました。 スプライン、チェビシェフ多項式などは試しませんでした。 これは、このトピックでこれまでに見つけたものです。 長方形グリッド上のPython 4D線形補間 x、y、zの異なる間隔で定期的にサンプリングされた3Dデータの高速補間 通常のグリッドデータの高速補間 多変量散乱補間のどの方法が実用に最適ですか?

1
Python / Numpy配列操作のパフォーマンスは、配列の次元の増加に伴ってどのようにスケーリングしますか?
Python / Numpy配列は配列の次元の増加に伴ってどのようにスケーリングしますか? これは、この質問に対するPythonコードのベンチマークテスト中に気づいたいくつかの動作に基づいています:numpyスライスを使用してこの複雑な式を表現する方法 この問題のほとんどは、配列を作成するためのインデックス付けに関係していました。Pythonループ上で(あまり良くない)CythonとNumpyバージョンを使用する利点は、関係する配列のサイズによって異なることがわかりました。NumpyとCythonの両方は、ある時点まで(Cythonの場合は、Numpyの場合はN = 2000程度)のパフォーマンス上の利点が増加し、その後利点は低下しました(Cython機能は最速のままでした)。N= 500N=500N=500N= 2000N=2000N=2000 このハードウェアは定義されていますか?大規模な配列で作業するという点で、パフォーマンスが高く評価されているコードについて従うべきベストプラクティスは何ですか? この質問(なぜMatrix-Vector Multiplication Scalingではないのですか?)は関連している可能性がありますが、Pythonで配列を処理するさまざまな方法が相互にどのようにスケーリングするかについてもっと知りたいと思っています。

2
Pythonでカスタム確率密度関数を定義する
自分自身を定義するためにいくつかの確立Pythonパッケージ(例えばscipyのダウンロード)を使用しての方法があり、確率密度関数を(ただ、事前のデータなしでのような、私はそれで計算を行うことができるようには、()連続ランダム変数の分散を取得する)?もちろん、SymPyやSageなどを使用して、シンボリック関数を作成し、操作を行うこともできますが、この作業をすべて自分で行う代わりに、既に実装されているパッケージを利用できるのではないかと考えています。f(x ) = a x + bf(バツ)=aバツ+bf(x) = a x + b

3
Scientific Pythonの有限差分法の推奨事項
私が取り組んでいるプロジェクト(双曲線PDEの場合)では、いくつかの数値を見て、動作の大まかなハンドルを取得したいと思います。しかし、私はあまり良いプログラマーではありません。 Scientific Pythonで有限差分スキームを効果的にコーディングする方法を学習するためのリソースをお勧めできますか(学習曲線が小さい他の言語も歓迎します)? この推奨事項の対象者(私)のアイデアを提供するには: 私は訓練によって純粋な数学者であり、有限差分スキームの理論的な側面にある程度精通しています 私が助けが必要なのは、コンピューターに計算したいものを計算させる方法です。特に、他の人がすでに行った労力をあまり重複させないように(車輪を再発明しないようにパッケージは既に利用可能です)。(私が避けたいもう一つのことは、目的に合ったデータ構造が確立されているときに、何かを手作業でコーディングすることです。) コーディングの経験があります。しかし、Pythonには何もありませんでした(したがって、別の言語を学習するための優れたリソースがあるかどうかは気にしません[たとえば、Octave])。 サンプルコードのコレクションと同様に、書籍とドキュメントの両方が役立ちます。

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 + y ...
18 python  fortran 

5
並列科学計算ソフトウェア開発言語?
ゼロから並列科学計算ソフトウェアを開発したいです。どの言語から始めるべきかを考えてみたい。このプログラムは、txtファイルへのデータの読み取り/書き込みと、多くのLU分解およびスパース線形ソルバーの使用を伴う大量の計算を並行して実行します。私が考えていたソリューションの候補は、OpenMPまたはco-arrayを備えたFortran 2003/2008、openmp cilk +またはTBB、pythonを備えたC ++です。その他の文書化された提案は大歓迎です!私はC、Fortran、Javaを(この順序で)よく知っています。私はPythonでいくつかのスクリプトを作成しましたが、基本的なものです。 fortranは非常に高速ですが、保守や並列化が難しいことは知っています。私が好きなPythonなどの外部ライブラリを使用しない限り、C ++は遅いと言われていますが、フルスケールの産業レベルのソフトウェアを書くことは現実的ですか? ソフトウェアは、大量のデータを処理でき、科学計算で効果的である必要があります。パフォーマンスが重要です。 背景については、Fortranで書かれた動作するソフトウェアが既にあります。多くの人々が長年にわたって開発に関わっており、コードは本当に汚れています。コードの維持と並列化は悪夢であることが証明されており、代替案を考えています。 ペトロス

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.