我在尝试使用多个值进行测试时遇到了麻烦,因为 for 循环中的 linspace 和 range 不接受数组作为输入。
这是我正在尝试做的一个例子:
gp_input = np.array([31,61])
def var_gp(gp):
for i in gp:
x_l = np.linspace(0,3,gp)
...
for i in range(gp):
...
错误告诉我什么:
Traceback (most recent call last):
var_gp(gp_input) 中的文件“变量 gp.py”,第 306 行
File "variable gp.py", line 18, in var_gp
x_l = np.linspace(0,3,gp)
File "<__array_function__ internals>", line 5, in linspace
File "/home/rjomega/anaconda3/lib/python3.8/site-packages/numpy/core/function_base.py", line 120, in linspace
num = operator.index(num)
TypeError: only integer scalar arrays can be converted to a scalar index
如果我只是手动更改 gp 的值并希望我可以插入尽可能多的值来尝试,这感觉就像是一个坏习惯。谢谢你。
如果我只是手动更改 gp 的值而不使用 def 函数,它工作正常
如果您也遇到此类问题,我发现了解决方案:
for i in gp:
gp = i
x_l = np.linspace(0,3,gp)
...
for i in range(gp):
...
添加 gp = i 似乎绕过了这个问题