Python:将数据类型从整数更改为浮点时出现内存错误

Python:将数据类型从整数更改为浮点时出现内存错误,python,numpy,types,Python,Numpy,Types,我有一个大小为13000*300000的数组,其中填充了从0到255的整数。我想将它们的数据类型从integer更改为float,就像数据是numpy数组一样: data.astype('float') 将其数据类型从整数更改为浮点时,会显示内存错误。我有80GB的内存。它仍然显示内存错误。您能告诉我是什么原因吗?这里的问题是数据量很大(大约30GB的连续数据,请参阅),因此在尝试将其装入内存时会导致错误。与其整体执行操作,不如将其切片,然后执行操作,然后合并,如: n = 300000 d

我有一个大小为13000*300000的数组,其中填充了从0到255的整数。我想将它们的数据类型从integer更改为float,就像数据是numpy数组一样:

 data.astype('float')

将其数据类型从整数更改为浮点时,会显示内存错误。我有80GB的内存。它仍然显示内存错误。您能告诉我是什么原因吗?

这里的问题是数据量很大(大约30GB的连续数据,请参阅),因此在尝试将其装入内存时会导致错误。与其整体执行操作,不如将其切片,然后执行操作,然后合并,如:

n = 300000
d1 = data[:, :n/2].astype('float')
d2 = data[:, n/2:].astype('float')

data = np.hstack(d1, d2)

一般来说,由于你的数据大小太笨拙,所以考虑在部分中使用它以避免被这些问题所困扰(参见此和其他技术)。

你的<代码>数据< /代码>的可能副本在内存中顺序地位于30 GB。您需要更多30GB(也按顺序)来存储结果。我认为这里的关键点是顺序,它的真实数据是按顺序排列的。很可能您必须在
hstack
之前
del data
,以释放足够的内存