我试图对一个包含10个微分方程和38个参数的系统进行灵敏度分析,代码如下:
# Formulating the problem for sensitivity analysis
problem = {
'num_vars': num_vars,
'names': p_names,
'bounds': bounds
}
# Generate the parameter samples using Saltelli's sampling method
num_samples = 256 # number of samples
param_values = saltelli.sample(problem, num_samples, calc_second_order=False)
# Run the model for each parameter sample
results = numpy.empty([param_values.shape[0], 10])
我一直收到这个消息错误:
results = np.empty([param_values.shape[0], 10])
AttributeError: 'numpy.float64' object has no attribute 'empty'
我在讨论论坛上找到了一些解决方案,比如尝试将param_values格式化为float、np.float64
或其他类型的数组或列表。此外,我尝试使用不同的函数,例如,使用np.zeros
或np.ones
而不是使用np.empty
。我也试过将numpy降级到以前的版本,但没有成功。我使用的是Python 3.11和numpy 1.24.3。我在python中找不到一个内置的普通函数来替代np.empty
。
1条答案
按热度按时间qnakjoqk1#
不要到处乱猜,而是阅读错误消息--全部。
如果您使用的函数不是
numpy
的一部分,则会得到如下消息你有
这意味着在
np.empty(...)
中,np
不是numpymodule
,而是一个numpy
浮点对象,一个数组的元素。AttributeError
通常是错误标识左侧变量的结果。这可能是右侧的问题,如果你打错了字或猜错了,但更常见的是左侧被分配给了意想不到的东西。LHS通常类似于None
。在Jupyter笔记本中,这个问题可能更严重,以前运行的单元可能会留下这样的垃圾。因此,在本例中,跟踪到
np
或numpy
的任何赋值。像这样的AttributeError经常出现,几乎可以作为
close
原因。