You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用5个bins绘制直方图报TypeError,Python代码错误如何解决?

问题原因

你传给matplotlib直方图接口的res变量是字典组成的列表,每个元素为{'a': 采样值, 'res': 均衡解}结构。直方图绘制需要对数值大小做比较来统计分箱,而字典无法直接和浮点数比较,因此触发了该报错。

修复方案

如果需要绘制求解得到的均衡值X的直方图,只需从字典列表中提取所有res对应的数值序列再传入绘图接口即可,修正后完整代码如下:

import numpy as np
from scipy import optimize
import matplotlib.pyplot as plt

a_samples = np.random.uniform(size = 100, low = 0.1, high = 5.0)
z = 0.1  

def f(X, a):
    return 1/(z * X**2 ) - (X**a + X + 10)

res = []
for a in a_samples:
    # 此处将a作为参数传入f,避免依赖全局变量
    res.append({'a': a, 'res': optimize.newton(f, a, args=(a,), tol= 1e-8)})

print(res)

def hist():
    fig, ax = plt.subplots()
    # 提取所有均衡解X的数值
    x_values = [item['res'] for item in res]
    ax.hist(x_values, bins=5)
    plt.show()
hist()

说明:上述代码同时优化了原代码中f函数依赖全局变量、循环变量覆盖原数组变量的问题,避免后续代码迭代出现变量冲突。

内容的提问来源于stack exchange,提问作者pao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:15:08