2015-01-29 5 views
6

문자열이 mystr = "100110" (실제 크기가 훨씬 큼)입니다. mynumpy = [1, 0, 0, 1, 1, 0], mynumpy.shape = (6,0)과 같은 배열로 변환하고 싶습니다. numpy에는 np.fromstring(mystr, dtype=int, sep='')이 있는데 아직 문자열을 분할 할 수 없습니다. numpy는 모든 숫자에 하나의 숫자를 사용합니다. 내 생각 엔 어떻게 numpy 배열로 내 문자열을 변환 할 수 있습니까?문자열을 numpy 배열로 변환

답변

16

list이 도움이 될 수 있습니다.

import numpy as np 

mystr = "100110" 
print np.array(list(mystr)) 
# ['1' '0' '0' '1' '1' '0'] 

당신은 문자열 대신 숫자를 얻고 싶은 경우에

: ASCII 문자가 다음 48 ( 0의 ASCII 값)을 빼기로

print np.array(list(mystr), dtype=int) 
# [1 0 0 1 1 0] 
10

당신이 그들을 읽을 수 있습니다. 이것은 큰 문자열을위한 가장 빠른 방법이어야합니다.

>>> np.fromstring("100110", np.int8) - 48 
array([1, 0, 0, 1, 1, 0], dtype=int8) 

또는 먼저 정수의 목록에 문자열을 변환 할 수 있습니다 :

>>> np.array(map(int, "100110")) 
array([1, 0, 0, 1, 1, 0]) 

편집 : 나는 몇 가지 빠른 타이밍과 첫 번째 방법은으로 변환하는 것보다 100 배 이상 빠른 않았다 먼저 목록을 작성하십시오.

관련 문제