2011-04-19 78 views
13

是否有任何設置numpy以全局使用float32值而不是float64值得幹淨的方法?Python:使numpy默認爲float32

+2

密切相關:http://stackoverflow.com/questions/5350342/can-i-set-float128-as-the-standard-float-array-in-numpy/5351486 – 2011-04-19 20:33:18

+3

關於scipy list的一個有趣的討論: http://old.nabble.com/switching-to-float32-ts24203533.html#a24203533 – joris 2011-04-19 20:41:16

+0

看到了那個討厭的談話,卻錯過了float128(謝謝sven),看起來他們都在說同樣的話:'不,不是真的'。在Nabble的討論中,當時提到將其添加到食譜,這將是很好的。我自己只是做了一些類似於提到的float128問題(並回答)。可惜 – Bolster 2011-04-20 00:03:18

回答

7

不是我所知道的。你需要在調用任何數組的構造函數時明確指定dtype,或者在將數組傳遞給GPU代碼之前將其轉換爲float32(使用ndarray.astype方法)(我認爲這是問題的關鍵? )。如果你真的擔心GPU的情況,那麼我更喜歡後者 - 如果沒有對numpy廣播規則和非常仔細設計的代碼的全面瞭解,嘗試將所有內容保存爲單精度會變得非常煩人。

另一種選擇可能是創建自己的方法,它重載標準numpy構造函數(如numpy.zeros,numpy.ones,numpy.empty)。這應該非常接近於將所有內容都保存在float32中。

+0

這就是我爲GPU做的事情,但我擔心的是直接比較測試中CPU綁定等效計算精度,作爲「奇怪的bug追捕」的一部分 – Bolster 2011-04-20 12:03:18

+0

這個評論對於廣播規則是否仍然有效?如果使用'dtype''float32'聲明數組,那麼在隱式轉換或廣播中是否存在任何風險? – Chiel 2017-10-10 15:50:39