【发布时间】:2018-11-18 23:04:29
【问题描述】:
我有以下带有数字和 nan 的列表:
test_list = [1, 2, 3, np.nan, 4, np.nan, 4.3, 4.5, np.nan, np.nan]
如何找到最后一个连续数字停止的索引?对于 test_list,代码将返回 7。
感谢您的回复
编辑 - 很抱歉没有把它放在那里。罗里,感谢您澄清我的问题所在。
import numbers
import numpy as np
test_list = [1, 2, 3, np.nan, 4, np.nan, 4.3, 4.5, np.nan, np.nan]
streak = 0
streak_list = list()
for t in test_list:
if isinstance(t, numbers.Number) and ~np.isnan(t):
streak += 1
else:
streak = 0
streak_list.append(streak)
此循环产生以下输出:
[1, 2, 3, 0, 1, 0, 1, 2, 0, 0]
那我试过这个,在一个小测试中是正确的,但我不是100%有信心。
streak_ends = [i for i, e in enumerate(streak_list) if e >= 2]
answer = streak_ends[-1]
我不仅认为总体上可能有更好的方法来执行此操作,而且我认为这在海量数据集上会相当慢。似乎有一种更简洁的方法可以找到它。
【问题讨论】:
-
for...if... 平常的东西... -
假设您自己不付出任何努力就可以得到响应是冒昧的。
-
好的,所以我真的不确定如何解决这个问题。我尝试过的东西就像它不起作用一样不符合pythonic。如果我不清楚,我的意思是问如何找到最后一个数字类型的列表元素的索引,该元素前面也是数字类型。
-
@fmc100。您应该在问题中非常清楚地说明这一点,也许通过提供一些输入示例,其中最后一个整数是单独的。另外,请展示您迄今为止所做的任何尝试。他们不必成功。你只需要解释出了什么问题。
-
这样更好吗?必须是更好的方法来做到这一点......