2016-07-28 14 views
2

Ich lese Daten aus einer .mat-Datei. Die Daten befinden sich in Form eines numpy-Arrays.Konvertierung von U3 dtype zu ascii

[array([u'ABT'], dtype='<U3')] 

Dies ist ein Element des Arrays. Ich möchte nur den Wert 'ABT' aus dem Array erhalten. Unicode normalize und Encode to ASCII-Funktionen funktionieren nicht.

Antwort

0

encode ist eine String-Methode, kann also nicht direkt auf ein Array von Strings arbeiten. Aber es gibt mehrere Möglichkeiten, es auf jede Zeichenfolge anzuwenden

Hier arbeite ich Py3, so ist der Standardwert Unicode.

In [179]: A=np.array(['one','two']) 
In [180]: A 
Out[180]: 
array(['one', 'two'], 
     dtype='<U3') 

Ebene Iteration:

In [181]: np.array([s.encode() for s in A]) 
Out[181]: 
array([b'one', b'two'], 
     dtype='|S3') 

np.char hat Funktionen, String-Methoden, die jedes Element eines Arrays anwenden:

In [182]: np.char.encode(A) 
Out[182]: 
array([b'one', b'two'], 
     dtype='|S3') 

aber es sieht so aus einer der Umsetzungen ist, dass astype kann handhaben:

In [183]: A.astype('<S3') 
Out[183]: 
array([b'one', b'two'], 
     dtype='|S3') 

Und eine aktuelle Frage inspiriert über np.chararray: What happened to numpy.chararray

In [191]: Ac=np.char.array(A) 
In [192]: Ac 
Out[192]: 
chararray(['one', 'two'], 
     dtype='<U3') 
In [193]: Ac.encode() 
Out[193]: 
array([b'one', b'two'], 
     dtype='|S3')