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
时,请检查前面几行是否缺少右大括号。
为什么在倒数第二行出现 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
时,请检查前面几行是否缺少右大括号。