2014-03-13 50 views
2

比方說,我有一個字符串列表:轉換字符串列表進入蟒蛇整數,跳過蒙面方面

fnew: 

masked_array(data = [-- -- '56527.9529' '56527.9544' '109.7147' '0.0089' '14.3638' '0.0779' 
'14.3136' '0.0775' '14.3305' '0.1049' '14.3628' '0.0837' '14.3628' 
'0.0837' '70.9990' '40.0050' '173.046' '-30.328' '73' '-99.175' '0.000' 
'0.000' '59.8' '0.0' '1.0'], 

mask = [ True True False False False False False False False False False False 
False False False False False False False False False False False False 
False False False], 
     fill_value = N/A) 

如何擺脫來自其他元素的報價,即轉換其他數字整數值,以便我可以做他們的計算?

+0

很難從你所展示的內容中猜出你的「字符串列表」究竟是什麼。如果你想幫助解析一個字符串列表,顯示'repr(your_list)'會很有用。 (也很難不懷疑會有一種簡單的方法來序列化和反序列化原始numpy蒙面數組。) – DSM

回答

2

事情是這樣的:

>>> import numpy as np 
>>> a = ['Foo', '59.8', 'bar', 'spam'] 
>>> arr = np.ma.array(a, mask=[True, False, True, True]) 
>>> arr.compressed().astype(float) 
array([ 59.8]) 
>>> arr[arr.mask].data 
array(['Foo', 'bar', 'spam'], 
     dtype='|S4') 
+0

我得到一個錯誤,說不能將字符串轉換爲浮點數! :( –

+0

@ user3276219剛剛看到你的[評論](http://stackoverflow.com/questions/22391462/converting-a-list-of-strings-into-integers-in-python-skipping-masked-terms/22391732#評論:34042212_22391579)在其他答案,請嘗試更新的解決方案。 –

+0

Thankssss soooo much Ashwini!:D –

0

可能是拉鍊的東西。你的數據結構不是很清楚,但是:

[int(float(val)) for val, maskVal in zip(masked_array, mask) if maskVal] 

應該足夠接近。

+0

好吧,它只是一個字符串列表,看起來像['words','wordsnumber','number', '數字','數字']所以我基本上掩蓋了前兩個元素,因爲他們不是數字,現在我想將其餘轉換爲整數,因此我可以使用這些列表進行計算 –

0

這正是itertools.compress是:(作爲字符串實際上代表了花車,而不是整數,它們必須首先轉換爲浮點數)

from itertools import compress 

array_o_nums = map(lambda x: int(float(x)), itertools.compress(data, mask)) 

+0

它不起作用!我有一個錯誤,它無法識別最後的面具! –