Python相当于R中的which()

Bok*_*sms 26 python r which indices

我试图采用以下R语句并使用NumPy将其转换为Python:

1 + apply(tmp,1,function(x) length(which(x[1:k] < x[k+1])))
Run Code Online (Sandbox Code Playgroud)

是否有Python等效于哪个()?这里,x是矩阵tmp中的行,k对应于另一个矩阵中的列数.

以前,我尝试了以下Python代码,并收到了值错误(操作数无法与形状一起广播):

for row in tmp:
        print np.where(tmp[tmp[:,range(k)] < tmp[:,k]])
Run Code Online (Sandbox Code Playgroud)

小智 6

    >>> which = lambda lst:list(np.where(lst)[0])

    例子:
    >>> lst = map(lambda x:x<5, range(10))
    >>> 第一
    [真、真、真、真、真、假、假、假、假、假]
    >>> 哪个(lst)
    [0, 1, 2, 3, 4]

  • 虽然此代码片段可能会解决问题,但 [包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而那些人可能不知道您提出代码建议的原因。 (4认同)

Tim*_*rka 1

来自http://effbot.org/zone/python-list.htm

要获取所有匹配项的索引,您可以使用循环,并传入起始索引:

i = -1
try:
    while 1:
        i = L.index(value, i+1)
        print "match at", i
except ValueError:
    pass
Run Code Online (Sandbox Code Playgroud)

  • 这是更简单、更易读的 `matchings_indices = [ i for i, x in enumerate(x) if x == value ]` (19认同)