52

私は、ユーザーがさまざまなデータ型を経時的に追跡できるようにするプロジェクトに取り組んでいます。基本的な考え方の一部は、ユーザーが必要な単位を使用してデータを入力できるようにすることです。私は両方のユニットを見てきました:

http://pypi.python.org/pypi/units/

および数量:

http://pypi.python.org/pypi/quantities/

しかし、最善の方法はわかりません。私が知る限り、数量はより複雑ですが、単位のより良い初期リストが含まれています。

4

11 に答える 11

35

科学計算アプリケーションでの明示的な単位の使用を称賛します。明示的な単位を使用することは、歯を磨くのと似ています。それは前もっていくらかの退屈さを追加します、しかしあなたが得る型安全性は長期的に多くのトラブルを救うことができます。たとえば、1億2500万ドルのオービターを惑星に衝突させないように。

また、おそらくこれら2つの他のPythonユニット/数量パッケージもチェックする必要があります。

Unum

Scientific.Physics.PhysicalQuantity

私はかつてScientific.Physics.PhysicalQuantityを調査しました。それは私のニーズを完全には満たしていませんでしたが、あなたのニーズを満足させるかもしれません。簡単な説明から、必要な機能を判断するのは困難です。

単位変換と次元分析のために独自のPythonパッケージを作成することになりましたが、リリース用に適切にパッケージ化されていません。GPU加速分子力学用のOpenMMシステムのPythonバインディングでユニットシステムを使用しています。あなたは私のPythonユニットコードのsvnリポジトリを閲覧することができます:

SimTKpythonユニット

最終的には、配布用にパッケージ化する予定です。おもしろいと思ったら教えてください。それは私がそれをより早くパッケージ化する動機になるかもしれません。SimTK pythonユニットシステムを設計するときに探していた機能には、次のものがあります。

  1. 単位は、必ずしも内部でSI単位として保存されるとは限りません。これは私にとって非常に重要です。なぜなら、私たちにとって重要なアプリケーション分野の1つは分子スケールであるからです。内部でSI単位を使用すると、一般的に使用される分子力の計算で指数オーバーフローが発生する可能性があります。内部的には、すべての単位系はSimTKで等しく基本的です。
  2. C++のBoost.Unitsシステムと同様のパワーと柔軟性が必要でした。私がそのシステムに精通していることと、優秀なエンジニアの大規模なグループの監視の下で設計されていることの両方の理由からです。Boost.Unitsは、巧妙に作成された第2世代の次元分析システムです。したがって、SimTKユニットシステムは第3世代システムであると主張するかもしれません:)。Boost.Unitsはランタイムコストのない「ゼロオーバーヘッド」システムですが、SimTKユニットを含むすべてのPython数量実装は、おそらくランタイムコストを正確にすることに注意してください。
  3. numpy配列と互換性のあるディメンション化された数量が必要ですが、必ずしもpythonnumpyパッケージは必要ありません。言い換えると、数量は、numpy配列または組み込みのPythonタイプのいずれかに基づくことができます。

あなたにとって重要な機能は何ですか?

于 2010-02-05T17:49:50.960 に答える
25

パイントは最近フィールドに出てきました。自分の経験を共有したい人はいますか?いいね。参考までに:近い将来、Pint は Uncertainties と統合されるようです。

于 2013-06-11T00:06:16.893 に答える
9

quantities温度のサポートが非常に悪いことに注意してください。

>>> (100 * pq.degC).rescale(pq.degF)
array(179.99999999999997) * degF
>>> (0 * pq.degC).rescale(pq.degF)
array(0.0) * degF

摂氏 0 度は華氏 0 度ではありません。彼らのフレームワークは、係数を掛けるだけではない変換をサポートしていません。

于 2012-02-14T09:02:39.520 に答える
5

web2py で有名な Massimo DiPierro によって書かれたBuckinghamと呼ばれる、これを行うための別のパッケージも出てきたようです。

また、ブライアンはしばらくの間、このようなことをしていたことにも注意してください。

于 2010-10-20T23:46:43.577 に答える
1

数量にはいくつかの単位が関連付けられているため、数量を使用する必要があると思います。

たとえば、圧力は、入力して別の単位 (Pa、psi、atm など) に変換できる量です。おそらく、アプリケーションの新しい数量仕様を作成できます。

于 2010-01-24T15:20:56.423 に答える