📌  相关文章
📜  'numpy.ndarray' 对象没有属性 'append' - Python (1)

📅  最后修改于: 2023-12-03 15:29:06.389000             🧑  作者: Mango

'numpy.ndarray' 对象没有属性 'append' - Python

在Python中,NumPy是一种常用的数值计算库。在NumPy中,多维数组是最常见的数据结构,即ndarray对象。ndarray有很多方便的操作函数,但是它并不像Python中的列表那样方便地拥有append()方法。这是一个常见的问题,我们需要了解一些解决方法。

问题

当我们尝试在NumPy数组中使用append()方法时,会出现以下错误信息:'numpy.ndarray' object has no attribute 'append'

这是因为ndarray对象在创建时就已经被分配了一块固定大小的内存块,而且不支持原地修改(因为在数组尾部添加远比在中间添加代价更高)。

解决方案
使用concatenate

我们可以使用NumPy中的concatenate()函数来连接两个不同的ndarray对象。

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr3 = np.concatenate([arr1, arr2])

print(arr3)  # [1 2 3 4 5 6]
使用resize

我们也可以使用NumPy中的resize()函数来改变ndarray的大小。我们需要先创建一个较大的数组,然后将原始数组拷贝到这个更大的数组中。

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr3 = np.resize(arr1, (6,))

arr3[-3:] = arr2

print(arr3)  # [1 2 3 1 2 3]
使用insert

我们也可以使用NumPy中的insert()函数在数组的指定位置插入值。这将返回一个新的ndarray对象,而不是修改原始对象。

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr3 = np.insert(arr1, 0, arr2)

print(arr3)  # [4 5 6 1 2 3]
结论

在NumPy中,我们不能像在Python列表中那样使用append()方法,但是可以使用concatenate()resize()insert()等函数来进行类似的操作。

以上是本文的全部内容,希望对您有所帮助。