[问题] meshgrid memory error 做smooth?

楼主: tsopk45168 (Pandasama)   2019-03-31 19:56:50
各位大大好
原始数据是(312500,3)的空间资讯
和(312500,3)的速度资讯
预计用pcolormesh做出投影到xy平面上的速度场
在做meshgrid的时候出现memory error
原本预计会做出(312500, 312500)的array
google后得到的方法是将影像的array做smooth
但是我目前的状况是连影像的array都没办法产生
所以想问怎样才能顺利使用meshgrid
补充说明:
s是simulation array
这个系统是用312500个粒子进行模拟
pos是粒子的空间三维资讯x,y,z
vel是粒子的速度分量vx,vy,vz
资料type: float64
size: (312500, 3)
目的是希望做出这个系统在x-y平面的速度分布
e.g. 以下这张图的形式
https://i.imgur.com/E33jECo.jpg
pos = np.array(s[“pos”])
vel = np.array(s[“vel”])
x, y = np.meshgrid(pos[:,0], pos[:,1])
vx, vy = np.meshgrid(vel[:,0], vel[:,1])
vxy = (vx**2 + vy**2)**0.5
plt.pcolormesh(x,y,vxy)
plt.colorbar()
plt.show()
作者: gmccntzx1 (o.O)   2019-03-31 20:26:00
你对资料型态的大小有概念吗? 以你目前的 array 大小假设你是使用 float32 (4 bytes/unit) ,那么你会需要(312500^2*4)/(1024)^3 ~= 363.7979 GB 的内存你要产生 meshgrid 的目的应该只是要产生图片,没有运算上的需求,所以我会建议你先做 down-sampling假设以 100 点取 1 点的方式 down-sampling ,你需要的内存可以降到 37.2529 MB如果你可以附上做这个的目的或执行上的要求,建议你再附注到原文,让大家更了解你要做什么,才能给你更好的建议
楼主: tsopk45168 (Pandasama)   2019-03-31 21:06:00
感谢g大回复,会先试看看您的方法

Links booklink

Contact Us: admin [ a t ] ucptt.com