我正在開發一個項目,讓用戶隨着時間的推移跟蹤不同的數據類型。部分基本思想是用戶應該能夠使用他們需要的任何單位輸入數據。我一直在看兩個單元Python中的單位換算
http://pypi.python.org/pypi/units/
和數量:
http://pypi.python.org/pypi/quantities/
但是我不知道去的最佳途徑。從我所知道的情況來看,數量更爲複雜,但包含更好的初始單位列表。
我正在開發一個項目,讓用戶隨着時間的推移跟蹤不同的數據類型。部分基本思想是用戶應該能夠使用他們需要的任何單位輸入數據。我一直在看兩個單元Python中的單位換算
http://pypi.python.org/pypi/units/
和數量:
http://pypi.python.org/pypi/quantities/
但是我不知道去的最佳途徑。從我所知道的情況來看,數量更爲複雜,但包含更好的初始單位列表。
我認爲你應該使用數量,因爲數量有一些與它相關的單位。例如,壓力將是可以輸入並轉換成不同單位(Pa,psi,atm等)的數量。可能您可以爲您的應用程序創建新的數量細節。
我贊成在科學計算應用中使用顯式單位。使用明確的單位類似刷牙。它在前面增加了一些乏味,但從長遠來看,您獲得的類型安全可以節省很多麻煩。就像說,not crashing $125 million orbiters into planets。
你也應該大概檢查了這兩個其他的Python單元/包數量:
Scientific.Physics.PhysicalQuantity
我曾經調查Scientific.Physics.PhysicalQuantity。它不完全符合我的需求,但可能會滿足您的需求。從簡要說明中很難說出您需要哪些功能。
我最終編寫了我自己的python包進行單位轉換和三維分析,但它沒有正確打包發佈。我們在GPU加速分子力學的OpenMM系統中使用我的單元系統進行python綁定。你可以在瀏覽我的蟒蛇單位代碼SVN倉庫:
最後,我打算將它打包進行分發。如果您覺得有趣,請告訴我。這可能會激勵我儘快將其打包。我在設計SimTK python單元系統時尋找的功能包括:
什麼特徵對您很重要?
它看起來像另一個軟件包也出現了這樣做,由web2py名譽,稱爲Buckingham Massimo DiPierro。
同樣值得注意的是,Brian已經有一段時間了。
白金漢似乎不完整,無法轉換例如:>>>(Number(100,dims ='gram'))。convert('pound')。值 'RuntimeError:Incompatible Dimensions'' – 2013-08-19 19:57:35
Daniel,您提到的特定錯誤這是因爲英鎊的內部定義是作爲一個力量單位而不是質量單位。另外,它當然沒有支持單元的詳盡列表。 – 2013-08-19 22:16:05
啊,這是有道理的,添加磅質量支持添加''lb':(453.592,0,0,1,0,0,0),#lb'到'UNITS'列表。 – 2013-08-20 13:53:41
注意quantities
對溫度非常糟糕的支持:
>>> (100 * pq.degC).rescale(pq.degF)
array(179.99999999999997) * degF
>>> (0 * pq.degC).rescale(pq.degF)
array(0.0) * degF
0攝氏度不爲0華氏度。他們的框架不支持任何不僅僅乘以一個因素的轉換。
溫度是棘手的,因爲有兩種類型 - 絕對/熱力學溫度和相對溫度差異。絕對的,每個人都知道0°F!= 0°C。談論溫差(ΔT)時,0°F == 0°C。 – 2017-08-29 15:15:26
Pint最近進入該領域。任何人都在意分享他們的經驗?看起來不錯。僅供參考:在不久的將來,它看起來像Pint will be integrated with Uncertainties。
品脫是真棒! – canesin 2013-07-24 11:23:26
我正在評價品脫我寫這個,但一個大* + 1 *是它可以使用十進制,這意味着沒有時髦的浮動四捨五入錯誤 - 提到的所有提到的庫似乎只能用浮動類型 - http://蟒蛇,在最lab.blogspot。ca/2013/01/how-many-pints-do-you-want-units-in.html – 2013-08-13 16:37:50
我不再是Pint的+1了 - 在過去的兩天裏我已經提交了兩個bug修復 - 我我在辯論,如果我真的需要額外的功能/複雜性,而是可以直接使用像http://code.activestate.com/recipes/577652-unit-conversions-using-decimal/ – 2013-08-16 20:03:06
我很驚訝沒有人提到SymPy。 SymPy是一個成熟且維護良好的Python的符號數學庫,而且是一個NumFOCUS-sponsored項目。
它有一個Physics模塊具有許多有用的類和功能「解決物理問題」。與你最相關的是,它有一個Unit子模塊,其中包含你需要的一切,我想;只要閱讀優秀的文檔。
我認爲你需要更具體地瞭解你的問題是什麼,才能得到有效的答案。 – 2010-01-23 23:38:54
我假設你將存儲標準化爲SI單位的數據,所以實際上這是輸入時的解析問題,可能是輸出中的轉換問題。 使用哪個庫具有最佳的解析/轉換 - 您可以在進出的方式上使用不同的庫。 – 2010-01-28 22:08:55
不幸的是,python中有很多解決方案。 http://pint.readthedocs.org/en/latest/faq.html#you-mention-other-similar-python-libraries-can-you-point-me-to-those – endolith 2014-05-22 15:11:11