Python TypeError 使用元组和整数

2024-09-29 19:33:01 发布

您现在位置:Python中文网/ 问答频道 /正文

此代码显示以下错误,不知道原因: 回溯(最近一次呼叫): “文件”测试求解器.py“,第24行,in S[j:j+NFM[i],:]=S[i]/2.0 TypeError:列表索引必须是整数,而不是元组

import numpy as np
mu = np.array([ -0.8611363115, -0.3399810435, 0.3399810435, 0.8611363115 ])
wt = np.array([ 0.3478548451, 0.6521451549, 0.6521451549, 0.3478548451 ])  
NCM = [0.0,1.0,2.0,3.0]
NFM = [3,4,5]
mt = [0,1,2]
S = [1,1,1]
totNFM = np.sum(NFM)
Q = S
psi = np.zeros((totNFM + 1 , 4))
phi = np.zeros(totNFM)
FMMID = np.zeros((totNFM, 1))
delta = np.zeros((totNFM, 1))
j = 0
#Compute Discretization##
for i in range(0, len(NFM)):
    delta[j: j+NFM[i]] = (NCM[i+1] - NCM[i])/NFM[i]
    S[j: j+NFM[i], :] = S[i] / 2.0 
    FMMID[j: j+NFM[i]] = RegMat[i]
    j = np.sum[NFM[0:i]]

Tags: 文件代码inpy错误npzeros原因
3条回答

删除逗号:

  S[j: j+NFM[i], :] = S[i] / 2.0 

应该是:

  S[j:j+NFM[i]:] = S[i] / 2.0 

既然您不使用step,您可以使用:

  S[j:j+NFM[i]] = S[i] / 2.0

使用切片时正确的sintax是[start:stop:step]

所以S[j: j+NFM[i], :]是不正确的。它应该是S[j: j+NFM[i] :],不带逗号。你知道吗

好的,我认为语法是正确的。S[j: j+NFM[i], :] = S[i] / 2.0这实际上是在创建一行。问题在于一个任意的源声明S = [1,1,1],它实际上是一个输入错误(TypeError)。我把它改成S = np.zeros((totNFM,4)),错误就消失了。你知道吗

相关问题 更多 >

    热门问题