如何在python中解决以下错误

时间:2016-12-05 11:12:27

标签: python numpy

from PIL import Image
import numpy as np
from math import sqrt
import numpy

im1 = Image.open("C:\Users...l8\B2.TIF")
im2 = Image.open("C:\Users\...l8\B3.TIF")
im3 = Image.open("C:\Users\.....\l8\B4.TIF")
im4 = Image.open("C:\Users\.........\l8\B8.TIF")
im1 = im1.resize((im4.size[0], im4.size[1]), Image.ANTIALIAS)
im2 = im2.resize((im4.size[0], im4.size[1]), Image.ANTIALIAS)
im3 = im3.resize((im4.size[0], im4.size[1]), Image.ANTIALIAS)
arr1 = np.array(im1)
arr2 = np.array(im2)
arr3 = np.array(im3)
arr4 = np.array(im4)

V1=(arr1+arr2-2*arr3)
V2=(arr1-arr2)
y= sqrt(2)
 x= sqrt(6)
 x1 = [[None for col in range(V1.shape[0])] for row in   range(V1.shape[1])]
y1 = [[None for col in range(V1.shape[0])] for row in range(V1.shape[1])]




for i in range(V1.shape[0]):
      for j in range(V1.shape[1]):
          x1[i][j] = (V1[i][j])/x
          y1[i][j] = (V2[i][j])/y

我收到了以下错误      Traceback(最近一次调用最后一次):        文件" C:\ Users \ shaheera \ Desktop \ ihs.py",第35行,in          x1 [i] [j] =(V1 [i] [j])/ x      IndexError:列表分配索引超出范围

2 个答案:

答案 0 :(得分:0)

不确定错误是什么(缩进似乎很可能),但是当你已经有一个numpy数组时,你真的不需要回到列表理解。

只做

V1=(arr1+arr2-2*arr3)
V2=(arr1-arr2)
x1=V1/np.sqrt(6)
y1=V2/np.sqrt(2)

答案 1 :(得分:0)

至于你的列表理解,你的列表索引是向后的。在最后两行中切换i和j。

x1[i][j](x1 [i]) [j],但我的长度为V1.shape[0],外部列表的长度为V1.shape[1]

但你可能仍会遇到记忆错误。