如何修复:‘numpy.ndarray’ object has no attribute ‘append’
NumPy是Python编程语言的一个库,增加了对大型多维数组和矩阵的支持,以及一大批对这些数组进行操作的高级数学函数。如果你从事分析工作,你可能已经接触到了python中的这个库。在开始的时候,当从python的传统列表切换到NumPy数组时,有些事情可能会让程序员感到困惑。我们可能遇到的一个错误是 “AttributeError: ‘numpy.ndarray’ object has no attribute ‘append'”。在这篇文章中,让我们看看为什么我们会看到这个错误以及如何解决这个问题。
当向 python 列表中添加一个项目时,我们使用了列表的 append 方法。语法非常简单,当我们试图在NumPy数组上复制同样的方法时,我们会得到上述的错误。让我们通过一个例子来看看。
例子:描述错误的代码
# Append method on python lists
import numpy
print("-"*15, "Python List", "-"*15)
# Create a python list
pylist = [1, 2, 3, 4]
# View the data type of the list object
print("Data type of python list:", type(pylist))
# Add (append) an item to the python list
pylist.append(5)
# View the items in the list
print("After appending item 5 to the pylist:", pylist)
print("-"*15, "Numpy Array", "-"*15)
# Append method on numpy arrays
# Import the numpy library
# Create a numpy array
nplist = numpy.array([1, 2, 3, 4])
# View the data type of the numpy array
print("Data type of numpy array:", type(nplist))
# Add (append) an item to the numpy array
nplist.append(5)
输出:
在上面的输出中,我们可以看到python列表的数据类型是list 。当我们执行追加操作时,项目即5被追加到列表_pylist _
的末尾。当我们对NumPy数组尝试同样的方法时,它失败了,并抛出一个错误 ” AttributeError: ‘numpy.ndarray’ object has no attribute ‘append'” 。输出结果很好解释,NumPy数组的类型是numpy.ndarray,它没有任何append()方法。
现在,我们知道NumPy数组不支持append,那么我们如何使用它呢?它实际上是NumPy的一个方法,而不是它的数组,让我们通过下面的例子来理解它,我们实际上是在一个numpy列表上执行append操作。
语法:
numpy.append(arr, values, axis=None)
参数:
- arr:numpy数组。数组,值被追加到它的副本中。
- values: numpy数组或值。这些值被附加到arr的一个副本上。它必须具有正确的形状(与arr的形状相同,不包括轴)。如果没有指定轴,值可以是任何形状,在使用前会被压扁。
- axis: int, optional:粘贴数值的轴。如果没有给出axis,arr和值在使用前都会被压扁。
例子:
# Append method on numpy arrays
# Import the numpy library
import numpy
# Create a numpy array
nplist = numpy.array([1, 2, 3, 4])
# View the data type of the numpy array
print("Data type of numpy array:", type(nplist))
# View the items in the numpy array
print("Initial items in nplist:", nplist)
# Add (append) an item to the numpy array
nplist = numpy.append(nplist, 5)
# View the items in the numpy array
print("After appending item 5 to the nplist:", nplist)
输出:
如在输出中,我们可以看到,最初,NumPy数组有4个项目(1、2、3、4)。在向列表中追加5项后,它就反映在NumPy数组中。这是因为这里的append函数是用在NumPy上,而不是NumPy数组对象(numpy.ndarray)上。