gpt4 book ai didi

python - 使用 bool 数组从列表中删除项目

转载 作者:行者123 更新时间:2023-11-28 16:45:16 25 4
gpt4 key购买 nike

我正在使用 bool 数组从 numpy 数组中删除一些列。是否可以用列表做类似的事情?

#Set a numpy array of booleans to True if column datatype is "Categorical"
cols_to_remove = np.array([datatype == "Categorical" for datatype in datatypes])

#Make a new array without the "Categorical" columns
cat_data = data[:, -cols_to_remove] # data here is a 2D numpy array

#Trying to do the same for a list - this way doesn't work
cat_datatypes = datatypes[-cols_to_remove] # datatypes here is a 1D list

最佳答案

这可以通过列表理解来完成:

In [17]: cols_to_remove = [False, False, True, False, True, False]

In [18]: [d for (d, remove) in zip(datatypes, cols_to_remove) if not remove]
Out[18]: ['a', 'b', 'd', 'f']

它的cols_to_remove是一个索引数组,可以使用下面的解决方案:

In [12]: datatypes = ['a', 'b', 'c', 'd', 'e', 'f']

In [13]: cols_to_remove = [2, 4]

In [14]: [d for (i, d) in enumerate(datatypes) if i not in cols_to_remove]
Out[14]: ['a', 'b', 'd', 'f']

在这里,出于效率原因,将 cols_to_remove 转换为 set 可能是个好主意。

关于python - 使用 bool 数组从列表中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14537223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com