在Python中绘制浮点数和整数的直方图

3

我有一组整数和浮点数,想要从中绘制一个直方图。为了实现这个目标,我正在使用以下代码:

import matplotlib.pyplot as plt
from numpy import array
gn=array([1,2,3,728,625,0,736,5243,9.0])
plt.hist(gn)
plt.show()

然而,我最终遇到了以下错误:
    plt.hist(a)
  File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 2827, in hist
    stacked=stacked, **kwargs)
  File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 8312, in hist
    xmin = min(xmin, xi.min())
  File "/usr/lib/python2.7/dist-packages/numpy/core/_methods.py", line 21, in _amin
    out=out, keepdims=keepdims)
TypeError: cannot perform reduce with flexible type

我不知道自己哪里出错了,可以有人建议一下如何绘制浮点数和整数的直方图吗?


1
这是非常奇怪的行为。正如Amy所说,如果您的输入列表包含浮点数和整数的组合,则在创建数组时应将其全部转换为浮点数。您能确认上面的确切代码重现了错误吗(在您的回溯中,似乎使用了一个名为a的不同变量)?您正在使用哪个版本的numpy?gn.dtype是什么? - ali_m
你看到的错误可能是由于数组实际包含非数字数据引起的(参见此处)。 - ali_m
现在代码可以正常运行,没有显示任何错误。我猜这个问题已经解决了。 - user3503711
1个回答

3

有趣。当我运行这个时,numpy会自动将整数转换为浮点数。可能是因为版本不同。您可以使用astype()方法将数组从flexible类型更改为float类型。请尝试更改为以下内容:

import matplotlib.pyplot as plt
from numpy import array
gn=array([1,2,3,728,625,0,736,5243,9.0])
plt.hist(gn.astype('float'))
plt.show()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接