2017-10-08 72 views
1

我有一個numpy的陣列下面gven:字符串的隱蔽numpy的陣列aftrer截斷

array([[' 0.12E'], 
     [' 0.00F'], 
     [' 0.00F'], 
     ..., 
     [' 0.00G'], 
     [' 0.00G'], 
     [' 0.00G']], dtype=object) 

我需要刪除,電子F和G以及陣列中隱蔽的每個元素爲浮點數。我該怎麼做??

回答

4

選項1
使用numpy字符串類型自動修剪最後一個字符。然後轉換爲float
如果你能相信所有條目6個字符長,需要進行修整一個字符結尾:...

a.astype('<U5').astype(float) 

array([[ 0.12], 
     [ 0. ], 
     [ 0. ], 
     [ 0. ], 
     [ 0. ], 
     [ 0. ]]) 

選項2
使用pd.DataFrame.replaceregex=True刪除非數字,然後轉換爲浮點數。

pd.DataFrame(a).replace('[^\d\.]', '', regex=True).astype(float).values 

array([[ 0.12], 
     [ 0. ], 
     [ 0. ], 
     [ 0. ], 
     [ 0. ], 
     [ 0. ]]) 
1

用途:

s = pd.Series(a[:, 0]) 
a = s.str.strip().str[:-1].astype(float).values.reshape(-1, 1) 
print (a) 
[[ 0.12] 
[ 0. ] 
[ 0. ] 
[ 0. ] 
[ 0. ] 
[ 0. ]]