numpy roll和masked array的奇怪行为

时间:2013-03-21 09:11:18

标签: python numpy

我有以下代码(即它只是一个虚拟代码来演示我的问题)

#!/usr/bin/python
import numpy as np

#define array, -999 being a missing value
a=np.array([5.,-999.,7.,8.])
print "array:"
print a
print

a=np.ma.masked_values(a,-999.)
print "masked array:"
print a
print

#define new missing value
bad=1e30
a.set_fill_value(bad)

#roll array
a=np.roll(a,1,axis=0)

#plug-in new missing value 
a=a.filled()

print "array after rolling with new missing value (1e30):"
print a

在我的32位机器上使用numpy 1.4.1,我得到了预期的输出:

array:
[   5. -999.    7.    8.]

masked array:
[5.0 -- 7.0 8.0]

array after rolling with new missing value (1e30):
[  8.00000000e+00   5.00000000e+00   1.00000000e+30   7.00000000e+00]

在我的64位机器上使用numpy 1.6.1我得到了

[   5. -999.    7.    8.]

masked array:
[5.0 -- 7.0 8.0]

array after rolling with new missing value (1e30):
[  8.00000000e+00   5.00000000e+00   1.00000000e+20   7.00000000e+00]

因此,在滚动数组后,1e30的屏蔽数组的填充值更改为1e20。我做错了什么,或者这是一个已知的错误?

圣拉斐尔

0 个答案:

没有答案