2016-07-28 4 views
2

.mat 파일에서 데이터를 읽습니다. 데이터는 숫자가 적은 배열 형태입니다.U3 dtype에서 ascii로 변환

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

이것은 배열의 한 요소입니다. 배열에서 'ABT'값만 가져 오려고합니다. 유니 코드 정상화 및 ASCII 코드로 인코딩이 작동하지 않습니다.

답변

0

encode은 문자열 메서드이므로 문자열 배열에서 직접 작업 할 수 없습니다. 하지만 각 문자열에 적용하는 방법은 여러 가지가 있습니다.

여기서는 Py3을 사용 중이므로 기본값은 유니 코드입니다.

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

일반 반복 :

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

np.char는 배열의 각 요소에 문자열 방법을 적용 기능이 있습니다

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

을하지만이 변환 중 하나 인 것 같습니다 그 astype 처리 할 수 ​​있습니다 :

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

그리고 최근 질문에서 영감에 대한 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')