我有一個基於NumPy的庫,有一些類會重載算術運算。由於大量的錯誤檢查,內部結構有點毛,但是我已經遇到了一個嚴重的問題,就是我正在做這件事。確定NumPy類型的擴展轉換
該庫背後的思想是讓程序員以最少的語法和精力使用它,非常簡單直觀。因此,我希望能夠輕鬆地組合不同數據類型的數組,並將較窄的數據類型轉換爲更大的數據類型。
舉例來說,如果我有兩個陣列,一個與D型float64
和其他與D型complex128
,一起加入它們時,我想轉換float64
到complex128
,但如果它是float64
和complex192
,我要轉換爲相反。但是,如果它是float64
和complex64
的組合,兩者之間不存在有效轉換,但不會損失float64
的精度,因此我想將它們都轉換爲complex128
。
我立即看到了問題,我將不得不尋找每種類型的組合,並確定它們最窄的常見擴展類型(想想最小公倍數),如果我想讓我的庫充分健壯。 I 不要想要將所有內容都轉換爲儘可能最寬的類型,因爲這會非常快速地變成內存效率低下的問題,而且我經常會將非常大的數組存儲在內存中。
是否有一種很好的方法來確定兩個NumPy類型之間最窄的常見擴展類型?
可能重複[在numpy中獲取結果數組的dtype](http://stackoverflow.com/questions/7285612/getting-the-dtype-of-a-result-array-in-numpy) – askewchan