2016-10-26 8 views
2

Ich schrieb das folgende Skript Daten aus CSV-Datei in numpy Array-Form zu laden:konvertieren Elemente in einem numpy Array String

import numpy 

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

und diese Probe ausgesehen:

[[ 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 ]] 

jetzt Ich möchte jede Zeile in diesem Array als String mit einem Komma extrahieren. Ich erwartete beispielsweise, dass Zeile 1 in 259463.392,2737830.062 konvertiert wird, Zeile 2 in 255791.4823,2742050.772 und so weiter.

ich den Code unten versucht:

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

und erhielt das Ergebnis vielleicht nicht das, was ich will,

[ 259463.392 2737830.062] 
<type 'str'> 

(I verwendet coords = '259467.2,2737833.87' und bekam die String-Form, das war es, was ich will: 259467.2,2737833.87)

Wie Elemente in einem numpy Array in Zeichenfolge mit einem Komma konvertieren?

+1

Die Form ohne die ',' ist nur die normale Art und Weise, dass 'numpy' Arrays angezeigt. Es hilft, sie von Python-Listen zu unterscheiden. Das ',' ist kein integraler Bestandteil einer Liste oder eines Arrays. Es ist nur eine Anzeigefunktion. – hpaulj

Antwort

4

Hier ist ein Ansatz mit join method -

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

Probelauf -

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

Vielen Dank für den Rat, aber ich habe eine kleine Frage, warum die Anzeige von mir von numpy Array in der Post fehlt Komma? – Heinz

+0

@Heinz Hmm, wenn die Eingabe ein NumPy-Array ist, sollte es. Oder Sie könnten versuchen, 'print (repr (a))' zu drucken. – Divakar

+0

Danke, repr() gibt das hacing-comma-Array zurück. – Heinz