[問題] meshgrid memory error 做smooth?已刪文

看板Python作者 (Pandasama)時間6年前 (2019/03/31 19:56), 6年前編輯推噓0(0011)
留言11則, 2人參與, 6年前最新討論串1/1
各位大大好 原始數據是(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() -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.137.191.205 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1554033412.A.D5B.html

03/31 20:26, 6年前 , 1F
你對資料型態的大小有概念嗎? 以你目前的 array 大小
03/31 20:26, 1F

03/31 20:26, 6年前 , 2F
假設你是使用 float32 (4 bytes/unit) ,那麼你會需要
03/31 20:26, 2F

03/31 20:27, 6年前 , 3F
(312500^2*4)/(1024)^3 ~= 363.7979 GB 的記憶體
03/31 20:27, 3F

03/31 20:28, 6年前 , 4F
你要產生 meshgrid 的目的應該只是要產生圖片,沒有運
03/31 20:28, 4F

03/31 20:29, 6年前 , 5F
算上的需求,所以我會建議你先做 down-sampling
03/31 20:29, 5F

03/31 20:30, 6年前 , 6F
假設以 100 點取 1 點的方式 down-sampling ,你需要的
03/31 20:30, 6F

03/31 20:31, 6年前 , 7F
記憶體可以降到 37.2529 MB
03/31 20:31, 7F

03/31 20:33, 6年前 , 8F
如果你可以附上做這個的目的或執行上的要求,建議你再
03/31 20:33, 8F

03/31 20:33, 6年前 , 9F
附註到原文,讓大家更了解你要做什麼,才能給你更好的
03/31 20:33, 9F

03/31 20:33, 6年前 , 10F
建議
03/31 20:33, 10F
※ 編輯: tsopk45168 (114.137.191.205), 03/31/2019 20:59:22

03/31 21:06, 6年前 , 11F
感謝g大回覆,會先試看看您的方法
03/31 21:06, 11F
※ 編輯: tsopk45168 (114.137.191.205), 03/31/2019 22:42:43
文章代碼(AID): #1SeAi4rR (Python)
文章代碼(AID): #1SeAi4rR (Python)