AttributeError: 'numpy.ndarray'对象没有'append'属性

70 投票
4 回答
377165 浏览
提问于 2025-04-17 07:51

我正在尝试运行第二页上提供的代码:

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'

我哪里做错了,导致出现最后这个错误?

4 个回答

1

我在程序中修改了一个循环后遇到了这个错误,我们来看一下:

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数组是不能直接使用append()这个方法的。如果我们查看一下文档,会发现需要用np.append(array),这里的array就是你想要添加的值。

import numpy as np

arr = np.array([1,2,3,47,1,0,2])

np.append(arr, 4)
61

可以使用 numpy.concatenate(list1 , list2) 或者 numpy.append() 来合并数组。想了解更多,可以查看这个讨论:将一个NumPy数组添加到另一个NumPy数组

撰写回答