3 回答

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)

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)

TA贡献1779条经验 获得超6个赞
首先使用
new_list = list(old_array)函数将数组转换为列表。(这将创建一个数组列表)
现在,您可以执行列表的所有操作,如弹出、过滤器等,以删除您想要的任何元素。
最后,当你有你的过滤列表时,使用
new_array = np.array(new_list) .(这个新数组将保留旧数组的维度)
添加回答
举报