Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从fits rec转换为ndaray时丢失信息_Python_Numpy_Pyfits - Fatal编程技术网

Python 从fits rec转换为ndaray时丢失信息

Python 从fits rec转换为ndaray时丢失信息,python,numpy,pyfits,Python,Numpy,Pyfits,我加载了一个fits文件,并将fitsrec数据转换为numpyndarray: import pyfits import os, numpy as np dataPath ='irac1_dataset.fits' hduTab=pyfits.open(dataPath) data_rec = np.array(hduTab[1].data) data=data_rec.view(np.float64).reshape(data_rec.shape + (-1,)) 我发现在数据中存在一些

我加载了一个fits文件,并将
fitsrec
数据转换为numpy
ndarray

import pyfits
import os, numpy as np
dataPath ='irac1_dataset.fits'

hduTab=pyfits.open(dataPath)
data_rec = np.array(hduTab[1].data)
data=data_rec.view(np.float64).reshape(data_rec.shape + (-1,))
我发现在数据中存在一些rec中不存在的
nan

data_rec[3664]
(2.52953742092, 3.636058484, -3.0, 1.16584000133, 0.13033115092, 0.0545114121049, 0.0977915267677, 0.0861630982921, 0.0935291710016)
data[3664]
array([  8.01676073e+230,  -1.68253090e-183,   1.10670705e-320,
        -5.38247269e-235,               nan,   3.19504591e+186,
        -6.19704421e+125,  -1.40287783e+079,   1.94744862e+094])
正如你所看到的,这些值发生了显著的变化,这是怎么可能的呢

关于hduTab[1]。数据:

data_rec = hduTab[1].data
>>> data_rec.dtype
dtype((numpy.record, [('entr_35_1', '>f8'), ('kurt_5_1', '>f8'), ('skew_23_1', '>f8'), ('skew_35_1', '>f8'), ('mean_23_2', '>f8'), ('mean_35_2', '>f8'), ('stdDev_23_1', '>f8'), ('stdDev_35_1', '>f8'), ('pixVal', '>f8')]))

是一张numpy唱片

是`>f8'把你搞砸了

In [380]: dt= [('entr_35_1', '>f8'), ('kurt_5_1', '>f8'), ('skew_23_1', '>f8'), 
     ...: ('skew_35_1', '>f8'), ('mean_23_2', '>f8'), ('mean_35_2', '>f8'), ('st
     ...: dDev_23_1', '>f8'), ('stdDev_35_1', '>f8'), ('pixVal', '>f8')]

In [382]: np.dtype(dt)
Out[382]: dtype([('entr_35_1', '>f8'),....('pixVal', '>f8')])

In [383]: np.array([(2.52953742092, 3.636058484, -3.0, 1.16584000133, 0.13033115
     ...: 092, 0.0545114121049, 0.0977915267677, 0.0861630982921, 0.093529171001
     ...: 6)],dtype=dt)
Out[383]: 
array([ ( 2.52953742,  3.63605848, -3.,  1.16584,  0.13033115,  0.05451141,  0.09779153,  0.0861631,  0.09352917)], 
      dtype=[('entr_35_1', '>f8'), ('kurt_5_1', '>f8'), ('skew_23_1', '>f8'), ('skew_35_1', '>f8'), ('mean_23_2', '>f8'), ('mean_35_2', '>f8'), ('stdDev_23_1', '>f8'), ('stdDev_35_1', '>f8'), ('pixVal', '>f8')])
In [384]: x=_
float
视图具有
nan
和无法识别的值:

In [385]: x.view(float)
Out[385]: 
array([  8.01676073e+230,  -1.68253090e-183,   1.10670705e-320,
        -5.38247269e-235,               nan,   3.19504591e+186,
        -6.19704421e+125,  -1.40287783e+079,   1.94744862e+094])
但是使用f8查看与输入匹配:

In [386]: x.view('>f8')
Out[386]: 
array([ 2.52953742,  3.63605848, -3.        ,  1.16584   ,  0.13033115,
        0.05451141,  0.09779153,  0.0861631 ,  0.09352917])

然后我可以使用
astype
转换成
float
,(显然是
把你搞砸了的是`>f8'

In [380]: dt= [('entr_35_1', '>f8'), ('kurt_5_1', '>f8'), ('skew_23_1', '>f8'), 
     ...: ('skew_35_1', '>f8'), ('mean_23_2', '>f8'), ('mean_35_2', '>f8'), ('st
     ...: dDev_23_1', '>f8'), ('stdDev_35_1', '>f8'), ('pixVal', '>f8')]

In [382]: np.dtype(dt)
Out[382]: dtype([('entr_35_1', '>f8'),....('pixVal', '>f8')])

In [383]: np.array([(2.52953742092, 3.636058484, -3.0, 1.16584000133, 0.13033115
     ...: 092, 0.0545114121049, 0.0977915267677, 0.0861630982921, 0.093529171001
     ...: 6)],dtype=dt)
Out[383]: 
array([ ( 2.52953742,  3.63605848, -3.,  1.16584,  0.13033115,  0.05451141,  0.09779153,  0.0861631,  0.09352917)], 
      dtype=[('entr_35_1', '>f8'), ('kurt_5_1', '>f8'), ('skew_23_1', '>f8'), ('skew_35_1', '>f8'), ('mean_23_2', '>f8'), ('mean_35_2', '>f8'), ('stdDev_23_1', '>f8'), ('stdDev_35_1', '>f8'), ('pixVal', '>f8')])
In [384]: x=_
float
视图具有
nan
和无法识别的值:

In [385]: x.view(float)
Out[385]: 
array([  8.01676073e+230,  -1.68253090e-183,   1.10670705e-320,
        -5.38247269e-235,               nan,   3.19504591e+186,
        -6.19704421e+125,  -1.40287783e+079,   1.94744862e+094])
但是使用f8查看与输入匹配:

In [386]: x.view('>f8')
Out[386]: 
array([ 2.52953742,  3.63605848, -3.        ,  1.16584   ,  0.13033115,
        0.05451141,  0.09779153,  0.0861631 ,  0.09352917])

然后我可以使用
astype
转换成
float
,(这显然是
数据记录的
dtype
是什么?或者更好的是,给出更多关于
hduTab[1]的信息.data
。我没有使用过
pyfits
。你到底想做什么?因为我不知道你为什么要对数组类型进行这些操作。我必须转换fits文件的内容(整个表)进入一个numpy数组
data\u rec
dtype
是什么?或者更好,提供有关
hduTab[1]的更多信息.data
。我没有使用过
pyfits
。你到底想做什么?因为我不知道你为什么要对数组类型进行这些操作。我必须将fits文件(整个表)的内容转换为numpy数组