python numpy.single在使用out参数时给出不同的结果

2024-05-12 23:44:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从双精度阵列转换为单精度阵列。为了优化空间,我尝试使用out参数,这样numpy就不会分配额外的空间。然而,两个版本的调用的结果似乎不同

import numpy as np

doubleArr = np.zeros((10000,10000), dtype=np.double)
doubleArr[0,0] = 1e-30
singleArr = np.single(doubleArr)
print ("%.40f"%singleArr[0,0]) 
singleArr = np.zeros((10000,10000), dtype=np.single)
np.single(doubleArr, out=singleArr)
print ("%.40f"%singleArr[0,0])  

结果是

0.0000000000000000000000000000010000000032
0.0000000000000000000000000000000000000000

“out”参数的用法是否不正确


Tags: import版本numpy参数npzeros空间精度
1条回答
网友
1楼 · 发布于 2024-05-12 23:44:28

这个谜已经解开了。调用c例程时,Numpy.ctypes会为c-python互操作创建大量内存。无法立即收集此内存,从而导致内存总使用量剧增。解决方案是在内存压力下使用gc.collect

相关问题 更多 >