【问题标题】:AttributeError: 'numpy.ndarray' object has no attribute 'append'AttributeError:“numpy.ndarray”对象没有属性“附加”
【发布时间】:2012-01-14 14:54:08
【问题描述】:

我正在尝试运行第二页上显示的代码:

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00-introduction-to-computer-science-and-programming-fall-2008/video-lectures/lecture-20/lec20.pdf

您必须在代码的底部添加以下几行:

simFlips(100,100)

show()

这是我在 ubuntu 上运行时遇到的错误:

Traceback (most recent call last):
  File "coin.py", line 36, in <module>
    simFlips(100,100)
  File "coin.py", line 16, in simFlips
    diffs.append(abs(heads - tails))
AttributeError: 'numpy.ndarray' object has no attribute 'append'

请告诉我我做错了什么,这给了我最后一个错误。提前致谢!

【问题讨论】:

  • 由于某种原因,您的 diffs 变量是一个 numpy ndarray。你确定你离开了写着diffs = []的那一行吗?这会将 diffs 设置为一个空的 python 列表,您可以调用 append on。
  • 按书面形式为我工作。
  • 是的,我做了,我只是从 pdf 中获取代码,在底部添加了两行并开始出现此错误。
  • DSM,你是如何执行代码的。在 ubuntu 还是其他平台上?

标签: python matplotlib


【解决方案1】:

使用numpy.concatenate(list1 , list2)numpy.append() 查看Append a NumPy array to a NumPy array 的线程。

【讨论】:

  • 不要忘记np.concatenate() 中的axis=0axis=1 参数。
【解决方案2】:

在我的程序中更改循环后出现此错误,让我们看看:

for ...
  for ... 
     x_batch.append(one_hot(int_word, vocab_size))
     y_batch.append(one_hot(int_nb, vocab_size, value))
  ...
  ...
  if ...
        x_batch = np.asarray(x_batch)
        y_batch = np.asarray(y_batch)
...

事实上,我在重用变量并忘记在外部循环中重置它们,就像 John Lyon 的评论:

for ...
  x_batch = []
  y_batch = []
  for ... 
     x_batch.append(one_hot(int_word, vocab_size))
     y_batch.append(one_hot(int_nb, vocab_size, value))
  ...
  ...
  if ...
        x_batch = np.asarray(x_batch)
        y_batch = np.asarray(y_batch)
...

然后,检查您是否正在使用 np.asarray() 或类似的东西。

【讨论】:

    【解决方案3】:

    您必须使用 numpy 函数来附加 numpy 数组。 Append 仅适用于普通列表而不是 numpy 数组。

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2020-12-03
    • 2020-11-29
    • 2020-10-06
    • 2018-01-25
    • 2016-06-29
    • 2020-03-25
    • 2013-12-07
    • 2017-10-16
    • 2020-02-23
    相关资源
    最近更新 更多