【问题标题】:Python 2.7: TypeError: 'float' object has no attribute '__getitem__'Python 2.7:TypeError:“float”对象没有属性“__getitem__”
【发布时间】:2016-08-25 09:26:46
【问题描述】:

我是编程和 Python 新手,如果这是一个愚蠢的错误,请原谅。

我正在尝试运行一个脚本,我想在其中基于对数正态分布生成样本数据,然后绘制该数据的直方图。

我总是出错

这是我的代码:

import numpy as np
import matplotlib.pyplot as plt

a = 0.75 + (1.25 - 0.75)*np.random.lognormal(10000)

[n,bins,patches] = plt.hist(a, bins=50, color = 'red',alpha = 0.5, normed = True)

plt.show()

错误:

Traceback (most recent call last):
File "H:\UQ&M\GUI Demos\WIP\Tester.py", line 10, in <module>
[n,bins,patches] = plt.hist(a, bins=50, color = 'red',alpha = 0.5, normed = True)
File "C:\Program Files (x86)\python27\lib\site-packages\matplotlib\pyplot.py", line 2341, in hist
ret = ax.hist(x, bins, range, normed, weights, cumulative, bottom, histtype, align, orientation, rwidth, log, color, label, **kwargs)
File "C:\Program Files (x86)\python27\lib\site-packages\matplotlib\axes.py", line 7650, in hist
if isinstance(x, np.ndarray) or not iterable(x[0]):
TypeError: 'float' object has no attribute '__getitem__'

我在这里阅读了类似的查询,但我似乎找不到解决方案。

我们将非常感谢您的专家建议。

在此先感谢您抽出宝贵时间对此进行调查。

【问题讨论】:

  • a == inf,一个简单的标量。 hist(x, ...) 需要一个序列作为第一个参数。你可能想要a = 0.75 + (1.25 - 0.75)*np.random.lognormal(size=10000)
  • @dhke:您可能想将其发布为答案
  • @AndreaCorbellini Nah,印刷错误,关闭投票;)
  • 谢谢@dhke,它确实修复了错误。感谢您的宝贵帮助:-)

标签: python python-2.7 python-3.x numpy


【解决方案1】:

来自matplotlib API a 应该是一个数组或序列,如果我在你的代码中是正确的,它是一个数字而不是数组

【讨论】:

    猜你喜欢
    • 2017-01-08
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 2018-04-13
    • 2013-04-15
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    相关资源
    最近更新 更多