提问人:Esra 提问时间:11/11/2023 更新时间:11/11/2023 访问量:25
错误:标量变量的索引无效,使用形状函数时如何解决
Error invalid index to scalar variable how to solve when using shape function
问:
我正在尝试使用以下函数在无子算法中进行突变步骤。不幸的是,我收到以下错误:
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
如何克服这样的错误?
答:
0赞
hpaulj
11/11/2023
#1
如果你是一个 ,即一个构造的,就像:x.position
scalar variables
np.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
我不知道这是你的代码是什么,以及从某个地方复制了什么(没有太多理解?),但关键是查看问题行中的索引操作。什么是变量,和 .position
ind
y.position[ind]
我无法提出任何修复建议,因为我没有大局或您的任何数据。但任何修复的第一步都是了解错误
评论
y.position
ind
argwhere
ind
np.int
ind
from 将是一个 (n,1) 数组(可以是 0、1 或更多)。我不知道这是什么,但显然它可以用这样的数组(或可能的任何索引)进行索引。argwhere
n
scalar variable