如何使用单独的numpy数组将numpy int转换为float?

时间:2017-10-26 07:04:19

标签: python arrays numpy out-of-memory

我有一个关于numpy内存错误问题的大量数据, 我尝试使用切片来处理它,如下所示 How to merge two large numpy arrays if slicing doesn't resolve memory error?

切片适用于numpy.multiply,但似乎无法通过切片将numpy int转换为float。 以下是样本:

images = numpy.array([1,2,3,4,5,6,7,8,9,10])
images[0:5] = images[0:5].astype(numpy.float32)
print type(images[0])
images = images.astype(numpy.float32)
print type(images[0])

<type 'numpy.int32'>
<type 'numpy.float32'>

一旦我使用images.astype(numpy.float32),我就会出现内存错误(dtype相同)。 目标内存太小,我可能很难使用稀疏矩阵。

感谢任何建议......!

1 个答案:

答案 0 :(得分:1)

您无法仅修改切片的dtype。当你这样做

images[0:5] = images[0:5].astype(numpy.float32)

images[0:5].astype(numpy.float32)会创建切片的float副本,但在将int切换回images后,结果会转换回images dtype int

您可以做的是创建切片的临时副本并将其转换为float:

copied_slice = images[0:5].astype(numpy.float32)

在数据的这个较小部分上进行所需的所有计算,保存所需的结果,然后转到下一个(复制和转换的)切片。