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

Error invalid index to scalar variable how to solve when using shape function

提问人:Esra 提问时间:11/11/2023 更新时间:11/11/2023 访问量:25

问:

我正在尝试使用以下函数在无子算法中进行突变步骤。不幸的是,我收到以下错误:

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

如何克服这样的错误?

python 列表 numpy 结构 遗传算法

评论

0赞 Woodford 11/11/2023
编辑您的问题,以包含一个最小可重复的示例,其中包含证明您的问题的测试数据。
0赞 Woodford 11/11/2023
您列出的代码与错误文本中的代码不同。
0赞 hpaulj 11/11/2023
什么?为什么你希望它能与 生成的数组一起使用?什么?y.positionindargwhereind
0赞 hpaulj 11/11/2023
使用时要小心。这可能已被弃用。np.int
0赞 hpaulj 11/11/2023
indfrom 将是一个 (n,1) 数组(可以是 0、1 或更多)。我不知道这是什么,但显然它可以用这样的数组(或可能的任何索引)进行索引。argwherenscalar variable

答:

0赞 hpaulj 11/11/2023 #1

如果你是一个 ,即一个构造的,就像:x.positionscalar variablesnp.float64

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

argwhere使用 that,并生成一个 (n,1) 数组:int

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]

我无法提出任何修复建议,因为我没有大局或您的任何数据。但任何修复的第一步都是了解错误