Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 索引错误。索引0超出大小为0的轴0的界限_Python_Numpy - Fatal编程技术网

Python 索引错误。索引0超出大小为0的轴0的界限

Python 索引错误。索引0超出大小为0的轴0的界限,python,numpy,Python,Numpy,当我运行我的代码时,我得到了错误 索引器:索引0超出了第42行上尺寸为0的轴0的界限,因为v[0]=v0 我不熟悉python,也不知道如何调试它 """ Density at height y """ def rho(rh, y): rho = rh*math.exp(-y/7249) return rho """ Acceleration of skydiver """ def accl(m, g, rho, v, As, Cs, Ap, Cp): if y[i+1] >= 1200

当我运行我的代码时,我得到了错误

索引器:索引0超出了第42行上尺寸为0的轴0的界限,因为v[0]=v0

我不熟悉python,也不知道如何调试它

""" Density at height y """
def rho(rh, y):
rho = rh*math.exp(-y/7249)
return rho

""" Acceleration of skydiver """
def accl(m, g, rho, v, As, Cs, Ap, Cp):
if y[i+1] >= 1200:
    accl = (1/(2*m) * rho(rh, y) * v**2 * As * Cs - g )
else:
    accl = (1/(2*m) * rho(rh, y) * v**2 * (As * Cs + Ap * Cp) - g)
return accl

h0 = 4000 # initial hieght
dt = 0.1 #timestep
n  = int(180/dt)
#lists for displacement, time, and velocities
v= np.array([])
v[0] = v0
t= np.array([])
t[0] = t0
y= np.array([])
y[0] = h0

#calculation of time, velocity and displacement
for i in range(n):
t[i+1] = t[i] + dt
v[i+1] = v[i] + accl(m, g, rho, v[i], As, Cs, Ap, Cp) * dt
y[i+1] = y[i] + v[i+1] * dt
if y[i+1] < 0:
    #ends plot once skydiver has landed
        break
# Plot
plt.plot(t, y, label = 'Position m')
plt.plot(t, v, label = 'Speed m/s')
plt.plot(t, accl, label = 'Acceleration m/s^2', color = 'green')
plt.xlim([t[0], t[-1]])
plt.xlabel("Time (seconds)")
plt.legend()
“高度y处的密度”
def rho(右,y):
rho=rh*math.exp(-y/7249)
返回rho
“跳伞者加速”
def accl(m、g、rho、v、As、Cs、Ap、Cp):
如果y[i+1]>=1200:
accl=(1/(2*m)*rho(rh,y)*v**2*As*Cs-g)
其他:
accl=(1/(2*m)*rho(rh,y)*v**2*(As*Cs+Ap*Cp)-g)
返回帐户
h0=4000#初始高度
dt=0.1#时间步长
n=int(180/dt)
#位移、时间和速度的列表
v=np.array([])
v[0]=v0
t=np.array([])
t[0]=t0
y=np.array([])
y[0]=h0
#时间、速度和位移的计算
对于范围(n)中的i:
t[i+1]=t[i]+dt
v[i+1]=v[i]+accl(m,g,rho,v[i],As,Cs,Ap,Cp)*dt
y[i+1]=y[i]+v[i+1]*dt
如果y[i+1]<0:
#一旦跳伞者着陆,情节就结束了
打破
#密谋
plt.plot(t,y,标签='位置m')
plt.绘图(t,v,标签=‘速度m/s’)
plt.plot(t,accl,标签='加速度m/s^2',颜色='绿色')
plt.xlim([t[0],t[-1]]))
plt.xlabel(“时间(秒)”)
plt.legend()

从空列表创建的Numpy数组无法编制索引-它们没有任何要编制索引的元素

np.array([]).shape
# (0,)
如果您事先知道
v
的维度,可以使用
np.empty()

或者,只需使用
v0
初始化
v

v = np.array([v0])

从空列表创建的Numpy数组无法编制索引-它们没有任何要编制索引的元素

np.array([]).shape
# (0,)
如果您事先知道
v
的维度,可以使用
np.empty()

或者,只需使用
v0
初始化
v

v = np.array([v0])
这毫无意义:您试图为空数组(没有元素!)的第一个元素设置一个值

试试这个:
v=np.array([v0])

如果要扩大阵列,请执行以下操作:

v = []
# whatever logic to grow v like:
for i in range(10):
    v.append(2*i-1)
# now turn it into an np.array:
v = np.array(v)
这毫无意义:您试图为空数组(没有元素!)的第一个元素设置一个值

试试这个:
v=np.array([v0])

如果要扩大阵列,请执行以下操作:

v = []
# whatever logic to grow v like:
for i in range(10):
    v.append(2*i-1)
# now turn it into an np.array:
v = np.array(v)

v=np.array([])
替换为
v=np.zero(n+1)
。您无法访问numpy数组边界之外的元素。您的声明将创建一个空的numpy数组。

v=np.array([])
替换为
v=np.zero(n+1)
。您无法访问numpy数组边界之外的元素。您的声明创建了一个空的numpy数组。

这将在他访问v的进一步索引时产生错误。他需要用大小n初始化v。@wit221否:
list
不需要预定义大小。是的,我指的是使用v=np.array([v0])的解决方案。这将在访问v[i+1]=v[i]+.中的numpy数组时产生错误……这将在他访问v的进一步索引时产生错误。他需要用大小n初始化v。@wit221否:
list
不需要预定义大小。是的,我指的是使用v=np.array([v0])的解决方案。这将在访问v[i+1]=v[i]+.中的numpy数组时产生错误。。。