vectores unir una recorrer posiciones multidimensional matriz matrices llenar guardar datos como bidimensional array python numpy matrix binary fortran

una - unir dos matrices en python



cómo leer una matriz NxNxN binaria fortran salida en Python (2)

No puedo ver nada más que una lectura directa trabajando aquí. Python no hace un gran trabajo con las matrices en 2-D, mucho menos 3-d, pero este código debería funcionar.

fin=open(''filename.dat'',''rb'') output=[] for x in range(0,ndim): xarr=[] for y in range(0,ndim): yarr=[] for z in range(0,ndim): yarr.append(struct.unpack(''i'', fin.read(4))) xarr.append(yarr) output.append(xarr)

Escribí una matriz en Fortran de la siguiente manera:

real(kind=kind(0.0d0)), dimension(256,256,256) :: dense [...CALCULATION...] inquire(iolength=reclen)dense open(unit=8,file=fname,& form=''unformatted'',access=''direct'',recl=reclen) write(unit=8,rec=1)dense(:,:,:) close(unit=8)

Quiero volver a leer esto en Python. Todo lo que he visto es para matrices 2D NxN y no matrices 3D. En Matlab puedo leerlo como:

fid = fopen(nfilename,''rb''); mesh_raw = fread(fid,ndim*ndim*ndim,''double''); fclose(fid); mesh_reshape = reshape(mesh_raw,[ndim ndim ndim]);

Solo necesito el equivalente en Python, presumiblemente hay una herramienta de carga / remodelación similar disponible. Si hay una forma más amigable y compacta de escribirlo para que Python lo entienda, estoy abierto a sugerencias. Presumiblemente se verá algo así : Simplemente no estoy familiarizado con la sintaxis equivalente para mi caso. Una buena referencia sería suficiente. Gracias.


Utilizando el enlace de IRO-bot modifiqué / hice esto para mi script (nada más que numpy magic):

def readslice(inputfilename,ndim): shape = (ndim,ndim,ndim) fd = open(fname, ''rb'') data = np.fromfile(file=fd, dtype=np.double).reshape(shape) fd.close() return data

Hice una media, max, min y suma en el cubo y coincide con mi código fortran. Gracias por tu ayuda.