我有一个大小为13000 * 300000的数组,填充0到255之间的整数。我想将它们的数据类型从整数更改为float,就像数据是一个numpy数组一样:
data.astype('float')
将数据类型从整数更改为float时,会显示内存错误。我有80 GB的RAM。它仍然显示内存错误。能告诉我这是什么原因吗?
答案 0 :(得分:8)
这里的问题是数据量巨大(大约30GB的顺序数据,请参阅How much memory in numpy array?),因此在尝试将其放入内存时会导致错误。而不是整体操作,切片,然后执行操作,然后合并,如:
n = 300000
d1 = data[:, :n/2].astype('float')
d2 = data[:, n/2:].astype('float')
data = np.hstack(d1, d2)
通常,由于您的数据大小非常笨重,因此请考虑将其部分使用以避免一直被这些问题所困扰(有关此技术和其他技术,请参阅Techniques for working with large Numpy arrays?)。