我编写了一个代码,生成一个大的3d numpy数据观察数组(float)。尺寸为(33000 x 2016 x 53),对应于(#obs.位置x 5分钟间隔(每周x周,每年x周)。它非常稀疏(大约有1.5%的条目被填充)。你知道吗
目前,我通过拨打:
my3Darray = np.zeros(33000,2016,53)
或者
my3Darray = np.empty(33000,2016,53)
然后,我的循环一次索引一个条目到数组中,并用floats更新1.5%(这部分实际上非常快)。然后我需要:
我试过用以下方法保存:
for slice_2d_week_i in xrange(nweeks):
weekfile = str(slice_2d_week_i)
np.savetxt(weekfile, my3Darray[:,:,slice_2d_week_i], delimiter=",")
但是,这非常慢,输出中的空条目显示为
0.000000000000000000e+00
这使得文件很大。你知道吗
是否有更有效的保存方法(可能为从未更新的条目留空?)有没有更好的方法来分配数组np.零或者np.空?在忽略未更新的条目(mean(my3Darray,3)不忽略0条目)的情况下,如何获取第三维的平均值。你知道吗
你可以用numpy的二进制格式保存,我用的是:np.savez。你知道吗
你可以用
np.sum(a, axis=2) / np.sum(a != 0, axis=2)
平均。请记住,当分母中有0时,这仍然会给您NaN
。你知道吗相关问题 更多 >
编程相关推荐