擅长:python、mysql、java
<p>我发现问题是<code>Image2array = Image2array[mid_x-494/2+offset_in_v:mid_x+493/2+offset_in_v, mid_y-660/2:mid_y+659/2]</code>导致浮点切片索引,可能是因为在计算这些索引时缺少运算符优先级,以及在不同版本的Python中整数除法的行为</p>
<p>Image2array=Image2array[mid_x-494/2+offset_in_v:mid_x+493/2+offset_in_v,mid_y-660/2:<strong>mid_y+659/2</strong>]</p>
<p>一个例子是上面突出显示的<code>mid_y+659/2</code>,其中<code>/</code>比<code>+</code>具有更高的优先级,因此操作将被评估为<code>mid_y+(659/2)</code>,首先评估<code>659/2</code>,并将其结果<code>329.5</code>添加到<code>mid_y</code>。因此,即使<code>mid_y</code>是一个int,也会以<code>.5</code>结束,并用一个<code>.5</code>对索引进行切片</p>
<p>我建议加入<code>()</code>来遵循您的优先顺序</p>
<p>另外,在python2和python3之间,<code>/</code>的行为也发生了变化,因为您从一台机器上复制了脚本,而这台机器运行的Python版本可能与您使用的不同,您可能必须使用底除法运算符<code>//</code>来删除python3中整数除法的浮点,而python2中的<code>/</code>总是这样</p>