首页 > 解决方案 > 如何删除 numpy 数组中的元素并在 python 中使用 for 循环及其索引

问题描述

这是我所做的,但它不起作用,我做了一个 for 循环,我用它来获取索引并在另一件事中使用它为什么它不起作用或者我可以找到另一种方法来删除元素并使用它的索引。

这是我的一些代码

X1_train, X1_test, y1_train, y1_test = train_test_split(EclipseFeautres, EclipseClass, test_size=0.3, random_state=0)
E_critical_class=y1_train.copy()
E_critical_class = E_critical_class[E_critical_class != 1]
for x in range(len(E_critical_class)):
if(E_critical_class[x]==1):
    E=np.delete(E_critical_class,x)

标签: pythonnumpyloops

解决方案


您的任务类似于过滤数组。您想删除所有元素== 1

假设源数组 ( arr ) 包含:

array([0, 1, 2, 3, 4, 1, 0, 3, 7, 1])

所以它包含 3 个元素== 1(要删除)。

一个更简单的方法是使用布尔索引并将结果保存回原始变量:

arr = arr[arr != 1]

结果是:

array([0, 2, 3, 4, 0, 3, 7])

如你所愿 - 所有都掉了。


推荐阅读