def arraytostring(a, prec=None): if len(a.shape)==1: return ','.join(map(lambda x:float2str(x, prec), a)) if len(a.shape)==2: return ';'.join([','.join(map(str, r)) for r in a]) else: return repr(a.shape)+':'+arraytostring(ravel(a))
def writeMDElement(f, path, data, header): h=repr(header) if data==None or type(data)!=ArrayType or len(data.shape)==0 or not any(data.shape): #print type(data) dlen=0 else: dat=data dti=dat.dtype.str if len(dti)!=3: dti="{"+dti[0]+dat.dtype.char sh=dat.shape dat=ravel(dat).tostring() dlen=len(dat) cat=struct.pack("<IIQ", len(path), len(h), dlen) f.write(cat) f.write(str(path)) f.write(h) if not dlen: return pc="<3sI"+"Q"*len(sh) pc=[pc, dti, len(sh)] pc.extend(list(sh)) dh=apply(struct.pack, pc) f.write(dh) f.write(dat)
def array2wav(a, sampr, filename): wav = wave.open(filename, "w") wav.setparams((a.shape[1], 2, sampr, a.shape[0], "NONE", "not compressed")) scalefac = max(50, max(abs(ravel(a)))) a = (a / scalefac) * 32767 a = a.astype(Int16) wav.writeframes(a.tostring()) wav.close()