使用要排除的索引列表进行索引

8 浏览
0 Comments

使用要排除的索引列表进行索引

这类似于其他一些问题(从Python列表或元组中显式选择项目在Python中获取特定索引的列表),但我想要做相反的操作:

有没有一种简洁的方法来指定要排除的索引列表/元组,而不是选择?我想到了类似于R或MATLAB的方式,你可以指定要排除的索引,例如:

vector1 <- c('a', 'b', 'c', 'd')
vector2 <- vector1[-1] # ['b', 'c', 'd']
vector3 <- vector1[c(-1, -2)] # ['c', 'd']

在Python中有没有实现相同功能的好方法?如果这是一个重复问题,我对搜索什么不太确定,表示道歉。

0
0 Comments

在上述代码中,出现了(Indexing with List of Indices to Exclude)这个问题。这个问题的原因是需要从一个数组中排除指定的索引值,并输出剩余的元素。解决方法是使用numpy库的in1d函数。

具体步骤如下:

1. 首先,导入numpy库。

import numpy

2. 创建一个包含字符串元素的numpy数组。

target_list = numpy.array(['1','b','c','d','e','f','g','h','i','j'])

3. 创建一个要排除的索引列表。

to_exclude = [1,4,5]

4. 使用numpy库中的in1d函数,将数组的索引与要排除的索引列表进行比较,得到一个布尔类型的数组。

numpy.in1d(range(len(target_list)),to_exclude)

5. 将布尔类型的数组取反,得到一个新的布尔类型的数组。

~numpy.in1d(range(len(target_list)),to_exclude)

6. 使用布尔类型的数组作为索引,从原数组中选取相应的元素。

target_list[~numpy.in1d(range(len(target_list)),to_exclude)]

7. 最后,将剩余的元素输出。

print target_list[~numpy.in1d(range(len(target_list)),to_exclude)]

以上就是解决(Indexing with List of Indices to Exclude)问题的方法。这个问题的出现可能是因为需要从一个数组中按照指定的索引排除一些元素,然后输出剩余的元素。为了解决这个问题,可以使用numpy库中的in1d函数来进行索引的排除操作。

0
0 Comments

在上面的代码中,我们有一个数组a和一个索引列表b。我们想要从数组a中排除索引列表b中的元素。也就是说,我们想要得到一个新的数组,其中不包含数组a中索引列表b中的元素。

然而,我们可以观察到,在使用a[b]时,我们得到了一个包含了我们想要排除的元素的新数组。这是因为使用a[b]时,我们实际上是在选择索引列表b中的元素,并将它们放入一个新的数组中。

要解决这个问题,我们可以使用numpy库中的np.delete函数。np.delete函数可以从数组中删除指定的索引或轴。在上面的代码中,我们使用np.delete(a, b)来删除数组a中索引列表b中的元素。这样,我们就得到了一个新的数组,其中不包含数组a中索引列表b中的元素。

因此,通过使用np.delete函数,我们可以轻松地从数组中排除指定的索引列表。这对于处理数组中的元素非常有用,特别是当我们想要排除特定的元素时。

0
0 Comments

原因:在给定一个列表和一个排除索引的集合后,需要从列表中排除这些索引对应的元素。

解决方法:通过使用列表推导式和enumerate函数,可以创建一个新的列表,其中排除了给定集合中的索引。

以下是解决方法的具体步骤:

1. 使用列表推导式将一个列表转换为另一个列表。列表推导式的语法为[element for i, element in enumerate(vector) if i not in to_exclude],其中vector是原始列表,to_exclude是需要排除的索引的集合。

2. 使用enumerate函数获取每个元素及其索引。enumerate函数的作用是将一个可迭代对象(如列表)转换为一个包含索引和对应元素的元组的迭代器。

3. 使用in运算符针对任何Set或Sequence类型来决定要排除的元素。在这里,to_exclude是一个Set类型的集合,可以通过检查索引是否存在于to_exclude中来决定是否排除该元素。

此外,文中还提到了一些技巧:

- 可以使用filter函数来完成列表的转换,特别是如果需要过滤的谓词已经作为一个具有良好名称的函数存在。

- 可以使用任何容器来完成这个任务,但大多数不是Set或Sequence的容器在这里都是不合适的选择。

通过使用列表推导式和enumerate函数,以及使用in运算符来判断是否排除元素,可以从给定的列表中排除指定的索引。

0