如何解决AttributeError:'numpy.float64'对象没有属性'empty'?

brqmpdu1  于 2023-06-06  发布在  其他
关注(0)|答案(1)|浏览(777)

我试图对一个包含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.zerosnp.ones而不是使用np.empty。我也试过将numpy降级到以前的版本,但没有成功。我使用的是Python 3.11和numpy 1.24.3。我在python中找不到一个内置的普通函数来替代np.empty

qnakjoqk

qnakjoqk1#

不要到处乱猜,而是阅读错误消息--全部。
如果您使用的函数不是numpy的一部分,则会得到如下消息

AttributeError: module 'numpy' has no attribute 'foobar'

你有

AttributeError: 'numpy.float64' object has no attribute 'empty'

这意味着在np.empty(...)中,np不是numpy module,而是一个numpy浮点对象,一个数组的元素。
AttributeError通常是错误标识左侧变量的结果。这可能是右侧的问题,如果你打错了字或猜错了,但更常见的是左侧被分配给了意想不到的东西。LHS通常类似于None。在Jupyter笔记本中,这个问题可能更严重,以前运行的单元可能会留下这样的垃圾。
因此,在本例中,跟踪到npnumpy的任何赋值。
像这样的AttributeError经常出现,几乎可以作为close原因。

相关问题