numpy 使用形状函数时对标量变量的错误无效索引如何解决

bqujaahr  于 2023-11-18  发布在  其他
关注(0)|答案(1)|浏览(149)

我尝试使用下面的函数在配子算法中进行变异步骤。不幸的是,我得到了如下错误:

IndexError                                Traceback (most recent call last)
<ipython-input-20-35511e994420> in <cell line: 2>()
      1 #Run the GA algorithm.
----> 2 out_1 = myGA_pv.run_ga_pv_simulation(problem, params)
      3 #out_2 = myGA_wind.run_ga_simulation(problem, params)
      4 

1 frames
/content/myGA_pv.py in mutate(x, mu, sigma)
    151     flag = np.random.rand(np.int(np.nan_to_num(x.position))) <= mu
    152     ind = np.argwhere(flag)
--> 153     y.position[ind] += sigma*(np.random.rand(ind.any().shape))
    154     return y
    155 

IndexError: invalid index to scalar variable.

字符串
这个函数的代码如下:

def mutate(x, mu, sigma):
    y = x.deepcopy() 
    flag = np.random.rand(np.int(np.nan_to_num(x.position))) <= mu
    ind = np.argwhere(flag)
    y.position[ind] += sigma*(np.random.rand(ind.shape))
    return y


如何克服这种错误?

zqry0prt

zqry0prt1#

如果你的x.position是一个scalar variables,即一个np.float64,构造如下:

In [101]: y=np.array([15.,20.])[0]; y
Out[101]: 15.0

字符串
argwhereint一起工作,并产生一个(n,1)数组:

In [102]: ind=np.argwhere(np.random.rand(int(y))<.15)

In [103]: ind
Out[103]: 
array([[ 0],
       [11]], dtype=int64)


使用它作为y的索引会产生错误:

In [104]: y[ind]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
Cell In[104], line 1
----> 1 y[ind]

IndexError: invalid index to scalar variable.


任何试图索引scalar variable的尝试都会产生此错误。
我不知道这是你的代码,什么是从别处复制的(没有太多的理解?),但关键的事情是看看问题行中的索引操作。变量是什么,positionind

y.position[ind]


我不能提出任何修正,因为我没有大局或任何数据。但任何修正的第一步都是了解错误

相关问题