다음 데이터를 파이썬 2로 작성했습니다. 파이썬 3 파일에로드하고 싶습니다.numpy.load를 사용하는 데 문제가 있습니다.
import numpy as np
x = np.array([{'a': np.array([1., 2., 3])}])
np.save('data.npy', x)
내 첫 번째 시도이 있었다 : 나는로드하려고 원본 데이터와 장난 후
import numpy as np
x = np.load('data.npy')
UnicodeError: Unpickling a python object failed
을, 그것은 보인다 나는 파이썬 내부 NumPy와 배열의 내부 NumPy와 플로트있을 때마다 사전, 오류가 발생합니다. 나는 사전을로드 할 수 있습니다, 나는 numpy 배열을로드 할 수 있습니다, 심지어는 파이썬 사전 안에 numpy 배열을로드 할 수 있지만 numpy 배열 안에 파이썬 사전 안에 numpy float가 생기 자마자 오류가 발생합니다. 내 두 번째 시도했다이 :
이 내가 데이터를로드 할 수 있지만이 사전에있는 모든 키의 앞에 'B'를 추가 한에서 일import numpy as np
x = np.load('data.npy', encoding = 'bytes')
x
array([{b'a': array([ 1., 2., 3.])}], dtype=object)
. 누군가가이 문제가 발생하는 이유와 해결 방법에 대한 통찰력이 있는지 궁금합니다.
감사합니다.
편집 :
다음 문제 해결 것 같다:
이import numpy as np
x = np.load('data.npy', encoding = 'latin1')
b는 실제로 키의 일부가 아닙니다. 문자열이 바이트 문자열임을 나타냅니다. 따라서 b'a '는 문자 a를 나타내는 1 바이트의 문자열입니다. 이것은 유니 코드 문자열과 유사합니다. 적어도 파이썬 2.x에서는'u'a '처럼 보입니다. – bigblind
거기에 덧글 (내가 삭제 된 것 같아요?) 시도 인코딩 = '대신'인코딩 '='바이트 '. 인코딩 = 'str'은 유효하지 않지만 인코딩 = 'latin1'이 작동하는 것처럼 보입니다. – Zhaitan