2014-09-05 52 views
0

我的代码有两个2D numpy阵列,zweights。 我遍历他们是这样的(而调换它们):将压缩后的迭代器分离为单个迭代器?

import statsmodels.api as sm 
import numpy as np 

for y1, w in zip(z.T, weights.T): # building the parameters per j class 
    temp_g = sm.WLS(y1, iself.X, w).fit() 

这是罚款,直到我开始为了加快我的代码使用Numba。随着Numba,我得到这个错误:

numba.error.NumbaError: (see below) 
--------------------- Numba Encountered Errors or Warnings --------------------- 
     for y1, w in zip(z.T, weights.T): # building the parameters per j class 
------------^ 
Error 82:12: Only a single target iteration variable is supported at the moment 
-------------------------------------------------------------------------------- 

要解决这个问题,我想我可以简单地这样做:

for y1 in z.T: 
    for w in weights.T: 
     temp_g = sm.WLS(y1, iself.X, w).fit() 

但我不是在蟒蛇太好尚未所以我只是想知道这是否是最好的方式?或者如果还有另一种更优化的方式?

回答

0

它看起来像Numba不支持指派拆包。分配给一个目标,那么解决了两个指数在元组:

for y1_w in zip(z.T, weights.T): 
    temp_g = sm.WLS(y1_w[0], iself.X, y1_w[1]).fit() 

这里y1_w是含有的z.Tweights.T成对式元件的元组,因此两个元件的元组。您可以使用索引来解决每个元素。

可以可能使用分配拆包for声明之外,在循环体:

for y1_w in zip(z.T, weights.T): 
    y1, w = y1_w # unpack the zip pair 'manually' 
    temp_g = sm.WLS(y1, iself.X, w).fit() 
相关问题