当前位置: 首页 > 知识库问答 >
问题:

在python中查找Numpy数组中第一个带条件元素的索引

岑驰
2023-03-14

我试图找到第一个元素的索引大于阈值,像这样:

index = 0
while timeStamps[index] < self.stopCount and index < len(timeStamps):
    index += 1

这可以在一个班轮内完成吗?我发现:

index = next((x for x in timeStamps if x <= self.stopCount), 0)

我不确定这个表达式的作用,它似乎总是返回0。。。有人能指出错误并解释一下表达方式吗?

共有3个答案

慕祯
2023-03-14

这一班机可以用

sample_array = np.array([10,11,12,13,21,200,1,2])

# oneliner
print(sum(np.cumsum(arr>threshold)==0))

np。cumsum(样本数组)

孔俊友
2023-03-14

我会这样做:

import numpy as np

threshold = 20

sample_array = np.array([10,11,12,13,21,200,1,2])

idx = np.array([np.where(sample_array > threshold)]).min()
print(idx)
#4
公良鸿禧
2023-03-14

另一个选择是使用np.argmax(详见这篇文章)。所以你的代码会变成这样

(timeStamps > self.stopCount).argmax()

需要注意的是,如果从未满足该条件,argmax将返回0。

 类似资料:
  • 问题内容: 假设我有一个整数的NumPy数组,如下所示: 我想找到数组的开始和结束索引,其中值的值大于重复的x倍(例如5倍)。因此,在上述情况下,其值为22和6。重复的22的开始索引为3,结束的索引为8。重复6相同。Python中是否有特殊的工具对您有所帮助?否则,我将遍历数组索引以获取索引,并将实际值与前一个进行比较。 问候。 问题答案: 使用@WarrenWeckesser在此处给出的和方法来

  • 问题内容: 我只需要找到1D中最小的第n个元素。 例如: 我想获得第五个最小的元素,所以我想要的输出是。 我当前的解决方案是这样的: 但是,找到5个最小的元素然后再选择最大的元素对我来说似乎很笨拙。有更好的方法吗?我是否缺少一个可以实现目标的功能? 有些问题的标题与此相似,但我没有看到任何答案。 编辑: 我本来应该提到它,但是性能对我来说很重要。因此,虽然不错的解决方案对我来说不起作用。 结果:

  • 问题内容: NumPy具有有效的功能/方法来标识对象中非零元素的索引。什么是最有效的方式来获得该元素的索引 做 具有零值? 问题答案: numpy.where()是我的最爱。

  • 问题内容: 我有两个一维数组x和y,一个比另一个小。我试图找到x中y的每个元素的索引。 我发现有两种简单的方法可以做到这一点,第一种很慢,第二种需要占用大量内存。 记忆猪 是否有更快的方法或更少的内存密集型方法?理想情况下,搜索将利用以下事实:我们不是在列表中搜索一件事,而是在搜索许多东西,因此稍微适合并行化。如果您不假设y的每个元素实际上都在x中,则可获得加分。 问题答案: 正如Joe King

  • 问题内容: 我有一个数组: 我希望在此数组中找到多个值的行的索引: 对于此示例,我想要一个类似的结果: 我有一个执行此操作的代码,但我认为它过于复杂: 我找到了类似问题的答案,但仅适用于一维数组。 有没有一种方法可以更简单地完成我想要的工作? 问题答案: 方法1 一种方法是像这样 方法#2 一种内存有效的方法是将每一行转换为等效的线性索引,然后使用np.in1d,例如, 方法3 使用np.sear

  • 问题内容: 在Python中,我们可以使用来获取数组中值的索引。 但是,当我尝试执行NumPy数组时: 我得到: AttributeError:“ numpy.ndarray”对象没有属性“ index” 我如何在NumPy数组上执行此操作? 问题答案: 使用来获得,其中一个给定的条件是指数。 例子: 对于称为的2D : 对于一维数组: 请注意,这也适用于像条件,,等等… 您也可以使用方法创建的子