我有傻瓜。 python numpy数组,arr:
([1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 3L, 3L, 3L, 2L, 2L, 2L,
2L, 2L, 2L, 1L, 1L, 1L, 1L])
我可以找到1的第一次出现:
np.where(arr.squeeze() == 1)[0]
如何找到0或3之前的最后1个位置。
最佳答案
# Get the indices of places with 0s or 3s and this
# decides the last index where we need to look for 1s later on
last_idx = np.where(np.in1d(arr,[0,3]))[0][-1]
# Get all indices of 1s within the range of last_idx and choose the last one
out = np.where(arr[:last_idx]==1)[0][-1]
请注意,对于没有找到索引的情况,使用
[0][-1]
之类的东西会抱怨没有元素,因此需要在这些行周围包裹错误检查代码。样品运行-
In [118]: arr
Out[118]: array([1, 1, 3, 0, 3, 2, 0, 1, 2, 1, 0, 2, 2, 3, 2])
In [119]: last_idx = np.where(np.in1d(arr,[0,3]))[0][-1]
In [120]: np.where(arr[:last_idx]==1)[0][-1]
Out[120]: 9
关于python - 在python numpy中的特定值之前找到最后一个元素的位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36231381/