[英]Simplifying units in pint without changing the magnitude
使用python-pint
,假設我有一個定義為的數量
<Quantity(1.0, 'gram * kilopascal / joule')>
相當於kilogram/m3
。 現在,當我嘗試使用to_base_units
得到它時,我得到:
den.to_base_units()
<Quantity(1000.0, 'gram / meter ** 3')>
這是好的,除了我希望幅度仍然是1,而單位是<Quantity(1.0, 'kilogram / meter ** 3')>
,為了用戶友好的目的。 有沒有辦法實現這一目標?
順便說一句,在我的程序中,這種情況發生在許多不同的單元中,並且沒有(簡單的)方法知道哪些是轉換為它的正確單位,這使我無法使用convert_to
方法。 在這種情況下,它應該從1000 gram
變為kilogram
,但在下一種情況下,它可以從0.001 meter
到1 milimeter
,依此類推。
我知道品脫0.7(我還在使用0.6)有一個新的系統選項,但我也無法解決它。
干杯
首先,在品脫0.8.1中,克不再被視為基本單位。 相反,Pint將千克作為基本單位處理,符合SI標准:
>>> x = 0.1*ureg['g kpascal / J']
>>> print(x.to_base_units())
0.1 kilogram / meter ** 3
其次,我認為你可能混淆了兩件事,以基本單位獲得數量,並獲得方便的前綴。 to_base_units()
不是關於獲得方便的前綴,而是關於以SI 單位 (SI,s,kg,A,K,mol和cd在SI系統中)獲得數量。 如果你想要一個方便的前綴,你可能想要考慮to_compact()
:
>>> print(x.to_base_units().to_compact())
100.0 gram / meter ** 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.