我只想删除所需的[1,2],但这并没有完成
import numpy as np
arr = np.array([[1,2],[3,4],[5,6],[1,3]])
arr = np.delete(arr, np.where(np.isin(arr, [[1,2]])))
print(arr)
output:array([3,5,6,1,3])
我还使用了setdiff1d方法,但它删除了所有的1和2
我只想删除所需的[1,2],但这并没有完成
import numpy as np
arr = np.array([[1,2],[3,4],[5,6],[1,3]])
arr = np.delete(arr, np.where(np.isin(arr, [[1,2]])))
print(arr)
output:array([3,5,6,1,3])
我还使用了setdiff1d方法,但它删除了所有的1和2
3条答案
按热度按时间uxhixvfz1#
也许这个能帮上忙
下面是示例的输出
mpgws1up2#
我怀疑你没有花太多时间阅读
np.delete
文档。您没有指定轴。删除第一行很容易:
如果没有axis,
delete
会首先展平数组:通过索引或布尔掩码来删除/选择行也很容易
这就是
delete
最终要做的;它将“移除”列表转换为“保持”列表。问题的另一部分是确定要删除哪些行。也就是说,将值转换为行索引。把这两项任务分开是个好主意。
使用
isin
这是一个二维布尔数组。应用
all
:Oops,错误的轴:
我们可以使用布尔数组索引行:
以及用于移除行:
是的,我们可以使用
where
将其转换为索引,但这不是必需的。我鼓励您检查和理解过程中的每一部分,既要识别值,又要删除它们。不要把任何一个你不需要理解的“块框”。
zvokhttg3#
因此,对于这种特殊情况,我建议使用数组的结构化视图,这允许您将其视为“对象数组”(structs):
然后,您可以简单地执行以下操作:
或者等效地使用
np.delete
指定正确的轴:重要的是要注意,你可以添加更多的“项目”来删除琐碎:
只要确保在使用
np.array
构造函数创建结构化数组时,将list
与tuple
一起使用,以便它理解您希望如何正确解释它们。