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

the*_*tna 4 python types numpy

我有一个大小为13000*300000的数组,填充0到255之间的整数.我想将它们的数据类型从整数更改为float,就好像数据是一个numpy数组:

 data.astype('float')
Run Code Online (Sandbox Code Playgroud)

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

the*_*est 8

这里的问题是数据量很大(大约30GB的顺序数据,看看numpy数组中有多少内存?),因此在尝试将其放入内存时会导致错误.而不是整体操作,切片,然后执行操作,然后合并,如:

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

data = np.hstack(d1, d2)
Run Code Online (Sandbox Code Playgroud)

通常,由于您的数据大小如此笨重,因此请考虑将其部分使用以避免一直被这些类型的问题所困扰(请参阅使用大型Numpy阵列的技术?对于此技术和其他技术).

  • 为了释放足够的内存,你很可能在'hstack`之前必须要`del data` (3认同)