为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 numpy 二维数组中添加或删除特定元素?

如何从 numpy 二维数组中添加或删除特定元素?

呼唤远方 2021-11-16 14:39:59
给定以下 numpy 数组:arr = np.array([    [1,2,3],    [4,5,6],    [7,8,9]])删除并返回:arr = np.array([    [1,2,3],    [4,6],    [7,8,9]])我想从这个数组中删除 5。或仅删除 arr[1][2]。当我使用 del arr[i][j]它时会引发以下错误。 ValueError: cannot delete array elements对我来说,这种情况下的 numpy 文档不清楚。同样如何将元素添加到同一数组中的某些行?具体来说,当我使用 opencv 读取图像时,我遇到了这个错误。rgb_image = cv2.imread("image.png")del 操作给了我最大的错误,我无法做到 np.delete(...)
查看完整描述

3 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

一个 numpy 数组 ( ndarray) 是引用:


一个 ndarray 是一个(通常是固定大小的)相同类型和大小的项目的多维容器。


因此,如果要使用ndarray数据结构(及其所有优化),则不能有不同长度的行。


一个可能的解决方法是拥有一个列表数组


>>> arr=np.array([

    [1,2,3],

    [4,5,6],

    [7,8,9],

    []

])

(注意要转义 ndarray 数据类型的空行)


这样您就可以从其中一个列表中删除一个元素


>>> arr

array([list([1, 2, 3]), list([4, 5, 6]), list([7, 8, 9]), list([])],

      dtype=object)

>>> arr[1]=np.delete(arr[1], [1], axis=0)

>>> arr

array([list([1, 2, 3]), array([4, 6]), list([7, 8, 9]), list([])],

      dtype=object)


查看完整回答
反对 回复 2021-11-16
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

我认为一种方法是将 np.array 转换为 list 并重复转换为 np.array,如下所示:


arr = arr.tolist()

arr[1].pop(1)

arr = np.array(arr)

编辑:这似乎是正确的,麻木的方式:


np.delete(arr, [4, 4])

np.split(arr, [3, 5, 9])

Edit2:似乎并没有减少耗时,但您可以通过以下方式检查:


arr =  np.empty(3, dtype=np.object)

arr[:] = [1,2,3], [4,5,6], [7,8,9]

arr[1].remove(5)


查看完整回答
反对 回复 2021-11-16
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

首先使用
new_list = list(old_array)函数将数组转换为列表。(这将创建一个数组列表)

现在,您可以执行列表的所有操作,如弹出、过滤器等,以删除您想要的任何元素。

最后,当你有你的过滤列表时,使用

new_array = np.array(new_list) .(这个新数组将保留旧数组的维度)


查看完整回答
反对 回复 2021-11-16
  • 3 回答
  • 0 关注
  • 720 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信