为什么它会在第二行for jindx in xrange(1, 10):
中给出SyntaxError:无效语法?
它发生在我尝试的任何命令
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第一行是截距,第二行是回归),它给出了4 N x N数组系数。有谁知道如何执行正确的联合输出ls回归,以便最终得到2 K x N系数的数组?
答案 0 :(得分:2)
您在前一行错过了)
:
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
行是违规行的一部分,因为没有关闭{{ 1}}发现了。
所以,经验法则:当你得到一个似乎没有意义的)
时,请检查前面几行是否缺少右括号。