如何从numpy或类似的图像数据阵列切掉1像素层

时间:2016-02-17 12:07:11

标签: python arrays numpy

我有一个指定尺寸的拟合图像,以像素为单位,我希望切掉顶部的一个像素和底部的一个像素。我试图使用:

sliced_array = my_array[1:-1,1:0]

然而,当我使用print(sliced_array.shape)查询新切片数组的形状时,这给了我:

  

(4070,0)

如何实现这一目标?

N.B。我在Python中工作,还有numpy和astropy模块。

2 个答案:

答案 0 :(得分:2)

您可以像这样切割最顶层和最底层

my_array[1:-1,:] 

保留所有列并排除最顶行和最底行

答案 1 :(得分:1)

如果要在不停止的情况下对阵列进行切片,则可以始终省略“停止”值(直到它到达结尾)。就像你省略了所有轴的“步”值一样。

遵循该逻辑,您可以使用:

sliced_array = my_array[1:-1,1:]

你应该得到正确的结果。

也许作为一个例子,如果你想从顶部而不是底部切一行,你也可以省略起始值,只给出一个结束值:

sliced_array = my_array[1:-1,:-1]

一句话:根据你的形象,我不确定你是否正确的水平和垂直。使用FITS图像时,x轴为轴1,y轴为轴0.不确定这是否会影响您。

如果是这种情况,您需要将其更改为:

sliced_array = my_array[:-1,1:-1]