使用zip()和np.delete()删除numpy数组相同位置元素的问题
问题解决方法
错误分析
你写的代码存在两个关键问题:
np.delete要求第二个参数传入待删除元素的索引位置,但你传的是数组元素值y和x,这就是触发「使用非整数数组作为delete的obj参数,未来会报错」警告的原因。np.delete不会直接修改原数组,而是返回删除后的新数组;同时你在循环遍历原数组的过程中修改数组长度,会导致遍历逻辑混乱,根本无法实现预期的删除对应元素的效果。
正确实现方式
用numpy的布尔索引直接筛选,这是最简洁高效的numpy风格写法:
# 生成布尔掩码:标记l中元素大于等于ls的位置 mask = l >= ls # 用掩码筛选两个数组,保留符合条件的元素 it_filtered = it[mask] l_filtered = l[mask]
补充说明
- 掩码
mask是和原数组长度一致的布尔数组,每个位置的True/False对应是否保留该位置的元素。 - 布尔索引是numpy处理这类元素筛选的标准方式,比循环遍历高效得多,也更易读。
内容的提问来源于stack exchange,提问作者Etiende
相关产品推荐
相关产品推荐

