将大型浮点数转换为颜色并有效地写入二进制

时间:2017-11-04 00:03:43

标签: python numpy memory colors netcdf

我正在处理大型NetCDF4文件(目前大约1 GB及以上但小于8 GB内存)。 99%的数据类型将是float32。我想将这些值映射到RGB颜色数组,然后我将其写入二进制文件以供另一个应用程序读取以供查看。因为每个R,G和B只需要1个字节,所以我希望有一个np.uint8数组来表示这个。最后,阵列占用的空间比浮子少25%。但是,由于原始数据很大,我不想同时将原始数据和颜色数据保存在内存中。现在我提供低值的颜色和高值的颜色。问题是在我的程序中短时间内,颜色数据由浮点数而不是np.uint8组成,这导致占用的内存是原始数据的3倍。有没有办法跳过浮点转换或至少只有一个浮点数在内存中,以便我不占用这么多内存?我在下面提供了相关代码:

select hckid, nme
from
(select h.name as nme, h.hacker_id as hckid, cnt
from (select s.hacker_id as hackerid, count(d.score) as cnt
from submissions s
join challenges c
on c.challenge_id = s.challenge_id
join difficulty d
on c.difficulty_level = d.difficulty_level
where d.score = s.score
group by s.hacker_id
having count(d.score) > 1) ft
join hackers h
on ft.hackerid = h.hacker_id) t
order by t.cnt desc, t.hckid asc

0 个答案:

没有答案