Python 将.npy掩码数组保存到带有NAN的.npy数组,其中掩码==True
有没有办法将遮罩的3D numpy阵列转换为使用NAN代替遮罩的numpy阵列?这样,我可以使用Python 将.npy掩码数组保存到带有NAN的.npy数组,其中掩码==True,python,numpy,Python,Numpy,有没有办法将遮罩的3D numpy阵列转换为使用NAN代替遮罩的numpy阵列?这样,我可以使用np.save轻松地写出numpy数组。另一种方法是找到一种方法,用一些清晰的指示符写出被屏蔽元素的屏蔽数组。我试过: a = np.ma.zeros((500, 500)) a.dump('test') 但是我需要文件的格式,以便可以读入R。谢谢。您可以将掩码乘以数据,以便所有掩码元素都等于零,例如: a=np.random.rand(500,500) b=ma.masked_greater(a,
np.save
轻松地写出numpy数组。另一种方法是找到一种方法,用一些清晰的指示符写出被屏蔽元素的屏蔽数组。我试过:
a = np.ma.zeros((500, 500))
a.dump('test')
但是我需要文件的格式,以便可以读入R。谢谢。您可以将掩码乘以数据,以便所有掩码元素都等于零,例如:
a=np.random.rand(500,500)
b=ma.masked_greater(a, .5)
result=b.data*b.mask
然后可以使用
result[result==0] = np.nan
您可以将遮罩乘以数据,使所有遮罩元素都等于零,例如:
a=np.random.rand(500,500)
b=ma.masked_greater(a, .5)
result=b.data*b.mask
然后可以使用
result[result==0] = np.nan
扫描显示np.ma.filled
符合您的要求。比如说,
import numpy as np
arr = np.arange(2*3*4).reshape(2,3,4).astype(float)
mask = arr % 5 == 0
marr = np.ma.array(arr, mask=mask)
print(np.ma.filled(marr, np.nan))
屈服
[[[ nan 1. 2. 3.]
[ 4. nan 6. 7.]
[ 8. 9. nan 11.]]
[[ 12. 13. 14. nan]
[ 16. 17. 18. 19.]
[ nan 21. 22. 23.]]]
或者,您可以使用掩码数组的
marr.filled(np.nan)
相当于np.ma.filled(marr,np.nan)
扫描显示np.ma.filled
符合您的要求。比如说,
import numpy as np
arr = np.arange(2*3*4).reshape(2,3,4).astype(float)
mask = arr % 5 == 0
marr = np.ma.array(arr, mask=mask)
print(np.ma.filled(marr, np.nan))
屈服
[[[ nan 1. 2. 3.]
[ 4. nan 6. 7.]
[ 8. 9. nan 11.]]
[[ 12. 13. 14. nan]
[ 16. 17. 18. 19.]
[ nan 21. 22. 23.]]]
或者,您可以使用掩码数组的
marr.filled(np.nan)
相当于np.ma.filled(marr,np.nan)