MATLAB에있는 프로젝트를 Python + Numpy로 변환하려고합니다. MATLAB에 메모리가 부족한 상태로 유지되기 때문입니다. 내가 가진 파일은 다소 길기 때문에 동일한 오류를 보여주는 최소한의 예제를 만들려고 노력했습니다.ndarray (Numpy)를 저장하려고 할 때 ValueError가 발생했습니다.
기본적으로 데이터 세트의 2 차원 막대 그래프를 만들고 일부 처리 후에 저장하려고합니다. 문제는 numpy.save 함수가 히스토그램 함수의 출력을 저장하려고 할 때 "ValueError : 시퀀스가있는 배열 요소 설정"을 던졌습니다. Numpy의 문서를 보면 문제를 찾을 수 없습니다.
파이썬의 내 버전은 2.6.6이고, 데비안 배포판의 Numpy 버전 1.4.1입니다.
import numpy as np
import random
n_samples = 5
rows = 5
out_file = file('dens.bin','wb')
x_bins = np.arange(-2.005,2.005,0.01)
y_bins = np.arange(-0.5,n_samples+0.5)
listy = [random.gauss(0,1) for r in range(n_samples*rows)]
dens = np.histogram2d(listy, \
range(n_samples)*rows, \
[y_bins, x_bins])
print 'Write data'
np.savez(out_file, dens)
out_file.close()
전체 출력 : (hist, x_bins, y_bins)
: 실제로 세 개의 배열의 튜플을 반환
$ python error.py
Write data
Traceback (most recent call last):
File "error.py", line 19, in <module>
np.savez(out_file, dens)
File "/usr/lib/pymodules/python2.6/numpy/lib/io.py", line 439, in savez
format.write_array(fid, np.asanyarray(val))
File "/usr/lib/pymodules/python2.6/numpy/core/numeric.py", line 312, in asanyarray
return array(a, dtype, copy=False, order=order, subok=True)
ValueError: setting an array element with a sequence.
코드의 작품처럼로드 할 수 있습니다 나를 위해 우분투 12.04, 파이썬 2.7 및 numpy 1.6.1 –
이상한입니다. 나는 더 많은 것을 실험했다. 피클 라이브러리를 사용하면 저장 작업이 가능하다. –
'savez'의 도움은'np.savez (file, * args, ** kwds)'입니다. numpy의 버전이 목록을 압축 해제하지 않는다는 느낌이 들었습니다. 'np.savez (out_file, * dens)'로 시도해 볼 수 있습니까? –