2012-01-08 78 views
2

我想將數字和字符串放入同一個numpy數組中。然而,我很少(很難複製,但有時)遇到一個錯誤,其中數字到字符串的轉換會導致無法反轉爲小數的值(即,我得到「9.8267567e」,而不是「9.8267567 e-5「)。寫入文件後會造成問題。下面是我在做什麼(雖然規模要小得多)的例子:在Python中限制數字位數

import numpy as np 
x = np.array(.94749128494582) 
y = np.array(x, dtype='|S100') 

我的理解是,這應該允許100個字符串中的字符,但有時我的截止後〜10看到。是否有另一種類型,我應該分配,或者一種方法來限制我的數組(x)中的字符數?

+0

爲什麼你使用字符串數組呢?另外,如果你想把字符串和浮點數放到同一個數組中,'numpy'不是你想要的。你可以通過對象數組來完成它,但是你忘記了整個numpy點的記憶效率......爲什麼不使用列表? – 2012-01-08 15:47:01

回答

1

首先,x = np.array(.94749128494582)可能不會做你的想法,因爲傳遞給np.array的參數應該是某種序列或者與數組接口有關的東西。也許你的意思是x = np.array([.94749128494582])?現在

,爲妥善保存字符串,您可以通過使用

y = np.array(x, dtype=object) 

然而,解決這一喬在他的評論中已經提到的,它不是很numpythonic,你也可以被使用老式的Python名單。

我會建議仔細檢查爲什麼你似乎有這樣的要求來保持字符串和數字在同一個數組中,它聞起來像我可能有不適當的數據結構設置,並可以從重新設計/重構中受益。 numpy數組用於快速數字操作,它們不適合用於字符串操作或某種類型的存儲/數據庫。