什么是>;i2数据类型Python

什么是>;i2数据类型Python,python,python-2.7,Python,Python 2.7,我有一些数据文件是数组的数组…例如: [[142 132 138 ..., 130 128 129] [137 134 135 ..., 124 117 124] [127 138 131 ..., 131 131 127] ..., [129 131 136 ..., 123 130 117] [134 141 133 ..., 133 124 121] [133 138 136 ..., 131 122 0]] 此文件具有2.8 MiB和类型>i2。。文件是fits,我知道它的类型是

我有一些数据文件是数组的数组…例如:

[[142 132 138 ..., 130 128 129]
[137 134 135 ..., 124 117 124]
[127 138 131 ..., 131 131 127]
..., 
[129 131 136 ..., 123 130 117]
[134 141 133 ..., 133 124 121]
[133 138 136 ..., 131 122   0]]
此文件具有2.8 MiB和类型
>i2
。。文件是fits,我知道它的类型是
int16
,但是
>i2在Python中是什么意思

如何将此数据文件转换为
float

所以我有三个数据拟合文件,暗框,平场和图像。我需要创建图像校正。我需要将这些数据文件转换为
float
,并进行一些操作(数据文件值的除法和差分),然后将结果转换为原始数据类型
int

我创建了进行更正的脚本,但我有一个问题,即结果更正图像有6.3 MiB,而没有2.8 MiB:

import numpy as np
import pyfits
from matplotlib import pyplot as plt
import glob


dark=glob.glob('.../ha/dark/*.fits')
flat=glob.glob('.../ha/flat/*.fits')
img=glob.glob('.../ha/*.fits')

sumd0 = pyfits.open(dark[0])
sumdd=sumd0[0].data
sumdd.astype(float)
for i in range(1,len(dark)):
     sumdi=pyfits.open(dark[i])
     sumdi=sumdi[0].data
     sumdd=sumdd.astype(float)+sumdi.astype(float)
dd=sumdd/len(dark)

sumf0 = pyfits.open(flat[0])
sumff=sumf0[0].data
sumff.astype(float)
for i in range(1,len(flat)):
     sumfi=pyfits.open(flat[i])
     sumfi=sumfi[0].data
     sumff=sumff.astype(float)+sumfi.astype(float)

ff=sumff/len(flat)

df=(ff-dd)

for n in range(len(img)):
    with pyfits.open(img[n],mode='update',memmap=True) as im:
        imgg=im[0].data
        header=im[0].header
        imgg.astype(float)
        imgg=(imgg-dd)/df
        imgg.astype(int)
plt.imshow(imgg,cmap=plt.cm.Greys_r,vmin=0.5,vmax=1.5)
plt.show()

请注意上面的数组数据类型>i2。>表示“big-endian”(<是little-endian),i2表示“有符号2字节整数”。例如,如果我们的数据表示一个无符号的4字节小尾端整数,那么数据类型字符串将
文档中列出了类型说明符。

OK…但是我如何从我的数据类型float中获取呢?我只是想。当我使用data.astype(float)然后打印数据时,astype(float)和我将数组从i2转换为floatNothing…这是因为您没有更改原始数组,
print(data.astype)(float))
您将看到它返回一个副本,请尝试
data=data.astype(float,copy=False)
我在sumdd=sumdd中得到了错误第14行。astype(float,copy=False)TypeError:astype()不接受关键字参数
>>> import numpy as np
>>> big_end_arr = np.ndarray(shape=(2,),dtype='>i2', buffer=big_end_str)
>>> big_end_arr[0]
1
>>> big_end_arr[1]
770