【发布时间】:2019-11-17 10:21:40
【问题描述】:
因为我是 python 编程的新手。我在 for 循环中遇到索引错误的问题。我已经完成了你给我的建议。我的问题是在for循环中...... 下面这段代码我没有收到任何错误...
for i in range(0,1):
但是如果限制超过例如(0,3),我会得到一个错误
for i in range(0,3):
错误是
IndexError: index 1 is out of bounds for axis 0 with size 1
我已尝试清除此错误,但我不确定如果限制超过 1,为什么会在 for 循环中出现此错误。
这是我的代码:
m=['paketone4000.dump.xlsx','paketone8000.dump.xlsx','paketone12000.dump.xlsx']
fig_name=['j4000','e8000','e12000']
fig=plt.figure(figsize=(6,6)) ##to obtain figure and dimensions of graph
for i in range(0,3):
#ax=fig.add_subplot(111,projection='3d') ## to have a broad view of figure
ax = fig.add_axes([0,0,1,1], projection='3d')
#plot planes
p = Rectangle((0,-0.7), 4.5,1.4, color="lightgrey", alpha=0.2) #plots the background frame
ax.add_patch(p)
art3d.pathpatch_2d_to_3d(p, z=0, zdir="z")
j=pd.read_excel(m[i]) ##to read the excel file format
X=j['x'] ## to import the variable on to axes from data set
Y=j['y']
Z=j['z']
#ax.scatter(X,Y,Z,c='g', marker='o') ## to specify the color and shape of point(marker) of the frame
a=j['x']##import centre of mass from excel file format
b=j['y']
c=j['z']
q1=j['q1'], ##attaining quaternons from excel file format. (comma(,) transformed series to tuple)
q2=j['q2'],
q3=j['q3'],
q4=j['q4'],
m,n,o,p=np.array([q1,q2,q3,q4]) ## assigning quaternions to variables had converted tuple to float
Rot_Mat=QtoR(m,n,o,p)
#cuboid initialising parameters
center = [a[0], b[0], c[0]] ##centre of the body
length = 0.3 ##defining length, breadth, height
width = 0.4
height = 0.1
side = np.zeros((8,3)) ###This numpy vector will be used to store the position of the sides
#rotate the axes and update
for angle in range(0, 360):
ax.view_init(90, angle)
cuboid(center, (length, width, height)) #to execute the defined cuboid
plt.savefig(fig_name[i])
plt.clf()
print("\nq1=",m,"q2=",n,"q3=",o,"q4=",p)
print('\nRotation Matrix=',Rot_Mat)
print ("\nCenter = \n",center)
我的预期结果是我想删除获得的错误,并且我有兴趣知道为什么当结束限制大于一时会发生该错误。
【问题讨论】:
-
m在索引0、1和2处只有三个元素,当您使用j=pd.read_excel(m[a])和a时,您期望m[4]是什么?4? -
即使是
a in range(1)这个center = [a[0], b[0], c[0]]throwTypeError -
是的,我已将
for i in range(0,3):更改为中心center = [a[i],b[i],c[i]],即使通过index error -
是
a、b或c列表/元组? -
如果我想要
m[4],那么我会将for循环的范围更改为for i in range (0,5):。这是您期待的答案还是其他什么?
标签: python for-loop index-error