AttributeError: 'numpy.ndarray' object has no attribute 'append' python报错

博客指出数组不支持append,解决办法是等得到完整的list后统一转为数组,还顺便提及了与extend的对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

出错如图:

数组不支持append,那么解决办法就是等得到了完整的list再统一转为数组:

顺便对比一下extend:

### 解决 `numpy.ndarray` 对象没有 `append` 属性的错误 在 Python 中,`numpy.ndarray` 是 NumPy 库中的一种数据结构,它与 Python 原生的列表(`list`)不同。`numpy.ndarray` 并不支持直接使用 `append` 方法来添加元素[^1]。当尝试执行 `cur_list[0].append(e)` 时,如果 `cur_list[0]` 是一个 `numpy.ndarray` 对象,就会引发 `'numpy.ndarray' object has no attribute 'append'` 的错误。 #### 替代方法 以下是几种可以用来向 `numpy.ndarray` 添加元素的方法: 1. **使用 `numpy.append()` 函数**: `numpy.append()` 是一种可以将新元素追加到现有数组的方法。需要注意的是,这会创建一个新的数组,而不是在原地修改原有数组。 ```python import numpy as np cur_list = [np.array([1, 2, 3])] e = 4 cur_list[0] = np.append(cur_list[0], e) print(cur_list[0]) # 输出: [1 2 3 4] ``` 2. **使用 `numpy.concatenate()` 函数**: 如果需要合并多个数组,可以使用 `numpy.concatenate()`。这种方法更加高效,尤其是在处理多维数组时。 ```python import numpy as np cur_list = [np.array([1, 2, 3])] e = np.array([4]) cur_list[0] = np.concatenate((cur_list[0], e)) print(cur_list[0]) # 输出: [1 2 3 4] ``` 3. **转换为列表后操作**: 如果确实需要频繁地添加元素,可以先将 `numpy.ndarray` 转换为 Python 列表,使用 `append()` 方法,然后再将其转换回 `numpy.ndarray`。 ```python import numpy as np cur_list = [np.array([1, 2, 3])] e = 4 temp_list = cur_list[0].tolist() temp_list.append(e) cur_list[0] = np.array(temp_list) print(cur_list[0]) # 输出: [1 2 3 4] ``` #### 性能注意事项 尽管 `numpy.append()` 和 `numpy.concatenate()` 可以实现类似的功能,但它们都涉及创建新的数组,因此在频繁添加元素的情况下可能会导致性能下降。如果需要动态扩展数组,建议考虑使用 Python 原生列表进行操作,最后再将其转换为 `numpy.ndarray`。 ```python import numpy as np temp_list = [] for i in range(5): temp_list.append(i) cur_list = [np.array(temp_list)] print(cur_list[0]) # 输出: [0 1 2 3 4] ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值