2016-10-26 99 views
2

我寫下面的腳本在numpy的陣列形式來加載從CSV文件中的數據:轉換元件以numpy的陣列串

import numpy 

sample = numpy.genfromtxt('sample_cor.csv', delimiter = ',') 
print sample 

樣品看起來像:

[[ 259463.392 2737830.062 ] 
[ 255791.4823 2742050.772 ] 
[ 249552.4949 2746152.328 ] 
[ 247925.1228 2746422.143 ] 
[ 262030.4697 2728966.229 ] 
[ 260462.1936 2731412.856 ] 
[ 260644.0281 2735003.027 ] 
[ 268588.7974 2732835.097 ]] 

現在我想提取此數組中的每一行以逗號分隔字符串,例如,我期望第1行轉換爲259463.392,2737830.062,第2行爲255791.4823,2742050.772,依此類推。

我嘗試下面的代碼:

ss = numpy.array_str(sample[0]) 
print ss 
print type(ss) 

,並得到了結果,我想也許沒有什麼,

[ 259463.392 2737830.062] 
<type 'str'> 

(我用coords = '259467.2,2737833.87'並得到了這是字符串形式我想: 259467.2,2737833.87

如何使用逗號將numpy數組中的元素轉換爲字符串?

+1

的形式是不帶','就是這樣'numpy'陣列顯示正常方式。它有助於將它們與Python列表區分開來。 ','不是列表或數組的組成部分。這只是一個顯示功能。 – hpaulj

回答

4

下面是一個使用join method的方法 -

[",".join(item) for item in a.astype(str)] 

採樣運行 -

In [141]: a 
Out[141]: 
array([[ 259463.392 , 2737830.062 ], 
     [ 255791.4823, 2742050.772 ], 
     [ 249552.4949, 2746152.328 ], 
     [ 247925.1228, 2746422.143 ], 
     [ 262030.4697, 2728966.229 ], 
     [ 260462.1936, 2731412.856 ], 
     [ 260644.0281, 2735003.027 ], 
     [ 268588.7974, 2732835.097 ]]) 

In [142]: [",".join(item) for item in a.astype(str)] 
Out[142]: 
['259463.392,2737830.062', 
'255791.4823,2742050.772', 
'249552.4949,2746152.328', 
'247925.1228,2746422.143', 
'262030.4697,2728966.229', 
'260462.1936,2731412.856', 
'260644.0281,2735003.027', 
'268588.7974,2732835.097'] 
+0

謝謝你的建議,但我有一個小問題,爲什麼在這篇文章中numpy數組的顯示缺少逗號? – Heinz

+0

@ Heinz如果輸入是一個NumPy數組,它應該。否則,你可以嘗試'print(repr(a))'。 – Divakar

+0

謝謝repr()返回having-comma數組。 – Heinz