import numpy as np
from nbodykit.lab import ArrayCatalog
_cat = ArrayCatalog({‘Position’: Position}) #Position是一个(nc**3,3)的的np数组
bs=1216
nc=Position.shape[0]**(1/3)
BoxSize=[bs, bs, bs]
Nmesh=[nc, nc, nc]
_mesh = _cat.to_mesh(BoxSize=BoxSize, Nmesh=Nmesh,
resampler=’cic’, position=’Position’)
#
_mesh.compute(mode=’real’).value等于
_mesh.preview(axes=[0,1,2])等于_mesh.preview(), 都是(nc,nc,nc)的np数组
#
_mesh.preview(axes=[0,1])[0,0]等于
sum(_mesh.preview(axes=[0,1,2])[0,0])
from matplotlib import pyplot as plt
plt.imshow(_mesh.preview(axes=[0,1]))
plt.colorbar()
Smilie Vote is loading.
gatget2 二进制文件读法:
_dtype = np.dtype([
(“block1”, np.int32), #0
(“npart”, np.uint32, 6), #4
(“mass”, np.float64, 6), #28
(“time”, np.float64),#76
(“redshift”, np.float64),#84
(“flag_sfr”, np.int32),#92
(“flag_feedback”, np.int32),#96
(“npartTotal”, np.int32, (6,)),#100
(“flag_cooling”, np.int32),#124
(“num_files”, np.int32),#128
(“BoxSize”, np.float64),#132
(“Omega0”, np.float64),#140
(“OmegaLambda”, np.float64),#148
(“HubbleParam”, np.float64),#156
(“fill”, np.int32, 24),#164
(“block2”, np.int32),#260
(“block_p1”, np.int32),#264
(“Position”, np.float32, nc*3),#这里nc等于”npart”的总和#268
(“block_p2”, np.int32),#268+nc*12
(“block_v1”, np.int32),#272+nc*12
(“Velocity”, np.float32, nc*3),#276+nc*12
(“block_v2″, np.int32)#276+nc*24
])
f = open(‘/home/xxx/snp00100.000.0’, mode=”rb”)
#f.seek(0) #在第二次读取之前,使用f.seek(0)将文件的位置指针重置到文件的开头,这样我们才能从头开始读取数据
block = np.fromfile(f, dtype=_dtype, count=1)
print(block[“npart”])