Python 索引器:索引1000超出大小为1000的轴0的界限

Python 索引器:索引1000超出大小为1000的轴0的界限,python,for-loop,numpy,indexing,Python,For Loop,Numpy,Indexing,我对python非常陌生,索引对我来说仍然很困难。我试图使用迭代运算绘制一些值,但它似乎不起作用,并给我上述错误。请帮帮我。谢谢 我的代码: import numpy as np import matplotlib.pyplot as mp e = np.exp z = np.arange(1000) for i in z: while True: H_2 = 0.58*e(-(z[i]/81)**2) i += 1 mp.scatter(H_2 , z, c =

我对python非常陌生,索引对我来说仍然很困难。我试图使用迭代运算绘制一些值,但它似乎不起作用,并给我上述错误。请帮帮我。谢谢

我的代码:

import numpy as np
import matplotlib.pyplot as mp

e = np.exp
z = np.arange(1000)


for i in z:
    while True:
    H_2 = 0.58*e(-(z[i]/81)**2)
    i += 1

mp.scatter(H_2 , z, c = 'r')
mp.show()

这一行给出了错误
i+=1

如果您计划使用
while
循环,请不要忘记添加
break
语句,否则您将陷入无限循环。没有任何额外的细节,我不明白为什么在这种情况下有必要这样做

除此之外,我还将
h2
定义为一个空列表,并将计算中的任何值附加到该列表中。根据h2需要是一个类似数组的值

所以它应该看起来像:

import numpy as np
import matplotlib.pyplot as mp

e = np.exp
z = np.arange(1000)
H_2 = []

for i in z:
    H_2.append(0.58*e(-(i/81)**2))

mp.scatter(H_2 , z, c = 'r')
mp.show()

希望该图如预期的那样出现。

因此,作为索引的一般入门,您需要记住索引是以零为基础的。因此,如果你有一个5个元素的数组,索引0将得到第一个元素,等等,索引4将得到第五个也是最后一个元素。也就是说,索引5因此试图访问第6个元素,因此是无效的


现在对Python来说,您应该知道'forx in list'语句将遍历lost中的所有元素,将实际值而不是索引放入变量x中。

z[i]
for循环体中的可能只是
i
或者,
h2=[0.58*e(-(i/81)**2)for in z]
关于
z[i]
仅仅是
i
你是对的,谢谢你指出这一点。我还认为,正如您所提到的,使用列表理解是一种更好的方法,但是OP对python来说是新的,所以我只是保持原样@哈姆西不认为在这里使用循环是合适的
H_2=0.58*e(-(z/81)**2)
是使用numpy数组的正确方法。谢谢@freshhmints,非常感谢您提供的有用答案。它工作得很好。很抱歉延迟回复。索引是基于零的。如果为True:,您认为它是什么?我认为它是一个循环,所以它会再次返回以检查它是否满足条件“如果我在z范围内”。感谢@karina提供有用的评论。