Unexpected SyntaxError: invalid syntax in nested loops

Unexpected SyntaxError: invalid syntax in nested loops

为什么在倒数第二行出现 SyntaxError: invalid syntax for jindx in xrange(1, 10):? 我尝试的任何命令都会发生这种情况

import numpy as np
from __future__ import division

def olsgmm(lhv, rhv, lags, wight):
    global Exxprim
    global inner
    if len(rhv[:,]) != len(lhv[:,]):
        print ("olsgmm: leftand right sides must have same number of rows. Currentlyrows are:")
        len(lhv)
        len(rhv)
    T = len(lhv[:,])
    N = len(lhv[:,1])
    K = len(rhv[:,1])
    sebv = np.zeros()
    Exxprim = np.linalg.inv((rhv.T * rhv)/T)
    bv = np.linalg.lstsq(rhv, lhv)
    if (len(weight[:,]) == 1 & len(lhv[:,1]) > 1):
        weight = weight * np.ones(len(lhv[:,1]),)
    if (len(lags[:,]) == 1 & len(lhv[:,1]) > 1):
        lags = lags * np.ones(len(lhv[:,1]),)
    if weight == -1: 
        sebv = float('nan')
        R2v = float('nan')
        R2vadj = float('nan')
        v = float('nan')
        F = float('nan')
    else:
        errv = lhv - rhv * bv
        s2 = np.mean(np.power(err, 2))
        vary = lhv - np.ones(T, 1)
        vary = np.mean(np.power(vary, 2))
        R2v = (1 - np.divide(s2, vary))
        R2adj = (1 - (np.divide(s2, vary)) * (T - 1)/(T - K)).T
        for indx in xrange(1, N + 1):
            err = errv[:,indx]
            if (weight[indx] == 0 | weight[indx] == 1):
                inner = (np.multiply(rhv, (err * np.ones(1,k))).T * (np.multiply(rhv, np.ones(1, K)))/T
                for jindx in xrange(1, 10):
                    inneradd = ([np.multiply(rhv, err) for j in xrange(1, T - jindx)] * np.ones(1, k)).T

除此之外,当我在第 16 行 运行 numpy.linalg.lstsq() 时,rhv 和 lhv 都是 K x N 矩阵(rhv 第一行是截距,第二行是回归量),它给出me 4 N x N 系数数组。有谁知道如何执行正确的联合输出 ls 回归以得到 2 K x N 系数数组?

您错过了前一行的 )

inner = (np.multiply(rhv, (err * np.ones(1,k))).T * (np.multiply(rhv, np.ones(1, K)))/T
#       ^           2     3             4   432     2           3            4    432  ?

然而,外括号对是多余的;您不需要对顶级表达式进行分组。还有两对多余的括号;以下应该可以正常工作:

np.multiply(rhv, err * np.ones(1, k)).T * np.multiply(rhv, np.ones(1, K)) / T

因为 Python 允许逻辑行通过将它们括在圆括号(或方括号或花括号)中来跨越源代码的多个物理行,所以 for 行是有问题的行的一部分尚未找到结束 )

因此,经验法则:当您得到一个似乎没有意义的 SyntaxError 时,请检查前面几行是否缺少右大括号。