我相信这些都是很好的答案,但我无法利用它们。然而,我找到了另一个部分回答了这个问题的帖子:MATLAB-style find() function in Python">MATLAB风格的Python中的find()函数
John发布了以下代码,考虑了find的第一个参数,在你的情况下是A>9 ---find(A>9,1)-- 但不包括第二个参数。
我修改了John的代码,我认为它考虑了第二个参数",1"
def indices(a, func):
return [i for (i, val) in enumerate(a) if func(val)]
a = [1,2,3,9,6,4,3,10]
threshold = indices(a, lambda y: y >= 9)[0]
这个返回 threshold=3。我的理解是Python的索引从0开始...所以这相当于matlab中的4。你可以通过改变方括号中的数字(即[1], [2]等)来改变调用的索引值,而不是[0]。
John的原始代码:
def indices(a, func):
return [i for (i, val) in enumerate(a) if func(val)]
a = [1, 2, 3, 1, 2, 3, 1, 2, 3]
inds = indices(a, lambda x: x > 2)
该段文字涉及编程相关内容,保留了HTML格式,并展示了一个返回值为 [2, 5, 8] 的函数调用结果。
>=
吗?因为>
会返回8。 - Pavan Yalamanchili9
在位置3
,10
在位置7
。 - Jaime