[問題] 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