蟒等效于R,它()的(Python equivalent of which() in R)

2019-06-27 15:16发布

我试图采取下列R-语句和使用NumPy的将其转换到Python:

1 + apply(tmp,1,function(x) length(which(x[1:k] < x[k+1])))

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

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

for row in tmp:
        print np.where(tmp[tmp[:,range(k)] < tmp[:,k]])

Answer 1:

下面的Python代码回答我的问题:

np.array([1 + np.sum(row[range(k)] < row[k]) for row in tmp])

这里TMP是一个二维数组,并且k是其对列比较设置一个变量。

由于https://stackoverflow.com/users/601095/doboy与答案激励我!



Answer 2:

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

    Example:
    >>> lst = map(lambda x:x<5, range(10))
    >>> lst
    [True, True, True, True, True, False, False, False, False, False]
    >>> which(lst)
    [0, 1, 2, 3, 4]


Answer 3:

从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


文章来源: Python equivalent of which() in R