2014-06-10 102 views
2

我有一個40 - 與像-0.399917,0.441786值尺寸numpy的矢量...變化numpy的陣列型浮動

默認載體的數據類型是| S8(字符串)

當我嘗試使用astype方法來改變D型,我碰到下面的錯誤 -

ValueError: could not convert string to float:

我的部分頌

value=np.array(value) 
value.astype(float) 
+1

您是否分割了字符串?你可以使用'np.fromstring' – M4rtini

+0

嘗試'[float(x)for x in value]''。如果這樣工作,用'np.array'包裝它。 'astype'不會將字符串轉換爲浮點數。 – hpaulj

回答

4

我沒有你確切的數據集,但下面的代碼爲我工作:

a = np.array(['-0.399917', '0.441786']) # (Line 1) 
dim = (2, 2, 2, 2) 
a = np.tile(a, dim) 
b = a.astype(float) 

我知道尺寸是不一樣的,你有,但這不應該有所作爲。可能發生的情況是,向​​量中的某些值不是您指定的格式。例如,下面的兩個當他們被用來提高你的ValueError異常(1號線):

a = np.array(['-0.399917', '0.441786', '']) 
a = np.array(['-0.399917', '0.441786', 'spam']) 

很可能,你必須要麼是空值,字符串值,或者您的數組中的類似地方的東西。

如果值是空的,你可以不喜歡有人建議here:你希望它是

a[a==''] = '0' 

或任何價值。只要有一個模式,你可以用其他字符串值做類似的事情。如果他們沒有模式,你仍然可以做到這一點,但通過尋找所有可能性可能是不可行的。

編輯:如果你不在乎字符串是什麼,你只是希望他們變成nan,你可以使用np.genfromtxthere解釋。這可能會也可能不會危險,具體取決於您的應用程序。通常,給出的代碼表示有關數組元素的內容,您可能不希望將它們全部對待。