【发布时间】:2014-03-18 11:38:34
【问题描述】:
我有一个 numpy 数组,它是一个向量(1 x n)。我想在它遇到布尔表达式(大于某个数字)的第一次和最后一次出现之间对其进行子集化。
I.E.类似于:
positions = numpy.where(myArray >= value)[0]
subset = myArray[positions[0]:positions[-1]+1]
这是一种解决方案,但据我了解,这将涉及在整个数组中搜索两次以检索 positions 结果。 myArray 可以很大,有没有其他解决办法?
【问题讨论】:
-
访问数组的第一个和最后一个元素不涉及任何搜索,它已经知道这些元素在哪里。这几乎是您可以做到这一点的最有效方式。至少据我所知。
-
如所列,这将截断最后一个值,例如,如果您的数组是
arr = np.array([0,1,2,0])并且截断是1你想要np.array([1,2])还是np.array([1])? -
@M4rtini;
where和布尔索引确实需要搜索。 -
@Ophion,是的,我错过了。我调整了代码 - 我想要完整的结果
标签: python arrays numpy indexing