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.