我的问题是,当我运行下面的代码时,我得到以下令人费解的错误
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
由于函数而出现:scipy.ndimage.interpolation.shift(input,shift,output = None,order = 3,mode =&#39; constant&#39;,cval = 0.0,prefilter = True)< / p>
上给出的功能的定义,令我感到困惑该定义指出:
&#34; shift:float或sequence,optional
沿轴的移动。如果浮动,每个轴的移位相同。如果序列,shift应包含每个轴的一个值。&#34;
Error明确指出值应为int,而定义明确要求浮点值。我尝试为&#39; shift&#39;插入整数值。并且代码工作正常。我也尝试将数据移动到ndarray中,但错误仍然存在。
所以我想做的是根据&#34; coords&#34;中的浮点值移动图像。数组,具有亚像素分辨率。我要么无法正确理解定义或错误消息,并且想知道为什么我的函数实现不起作用。
pa_float = [float(x) for x in pa_list]
dist_float =[float(x) for x in dist_list]
pa_rad_list = np.radians(pa_float)
x_coord = np.multiply(np.cos(pa_rad_list), dist_float)*(-1)*(512)
y_coord = np.multiply(np.sin(pa_rad_list), dist_float)*(512)
# The first number in x_coord and the first number in y_coord represent the first coordinate pair.... and so on for the second..n th
coords = np.column_stack((x_coord,y_coord)) # shape (72,12)
for data in glob.glob(ImageFolderPath+'/*icn.rest_avg.fits'):
scidata0 = fits.getdata(data,0)
scidata0[0,0,:,:] = ndimage.interpolation.shift(scidata0[0,0,:,:], coords[data,:], order=3,mode='nearest',prefilter=True)
finalarray.append(scidata0)
答案 0 :(得分:0)
所以我想出了问题所在。 'data'参数'的功能不像for循环中的典型计数器,而是包含文件名的字符串。 在for循环中添加一个计数器并在函数中将'data'更改为该计数器将解决问题。
for data in glob.glob(ImageFolderPath+'/*icn.rest_avg.fits'):
scidata0 = fits.getdata(data,0)
scidata0[0,0,:,:] = ndimage.interpolation.shift(scidata0[0,0,:,:], coords[i,:], order=3, mode='nearest', prefilter=True)
finalarray.append(scidata0)
i+=1