当前位置: 首页 > 知识库问答 >
问题:

R中which()的Python等价物

沈成天
2023-03-14

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

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

有与which()等价的Python吗?这里,x是矩阵tmp中的行,k对应于另一个矩阵中的列数。

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

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

共有3个答案

范彭亮
2023-03-14

从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
季城
2023-03-14

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

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

这里tmp是一个二维数组,k是为列比较而设置的变量。

感谢https://stackoverflow.com/users/601095/doboy用答案启发我!

夹谷腾
2023-03-14
    >>> 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]
 类似资料:
  • 在Python中有没有我可以做的等价操作?

  • 问题内容: 在Python中,您可以执行以下操作: 或这个: 在Go中,最简单的选项是: 这不允许您交换格式字符串中参数的顺序,而这需要对I18N进行。Go 确实 具有该软件包,这将需要以下内容: 这似乎是一条很长的路要走的错误消息。有没有更合理的选择,可以让我给出与顺序无关的字符串参数? 问题答案: 用 使用,实现您所需的格式化程序非常容易且紧凑。 输出(在Go Playground上尝试):

  • 我正在尝试将一些Python代码转换为Ruby。在 Ruby 中是否有与 Python 中的 语句等效的语句?

  • 问题内容: 在Python 2.x中,当您要将一个方法标记为抽象时,可以这样定义它: 然后,如果您忘记覆盖它,则会收到一个很好的提醒异常。是否存在将字段标记为抽象的等效方法?还是在您可以做的所有工作中在类文档字符串中说明? 起初我以为可以将字段设置为NotImplemented,但是当我查看它的实际用途(进行大量比较)时,它似乎很脏。 问题答案: 是的你可以。使用装饰器。例如,如果您有一个名为“e

  • Python的语句是否有等价物,类似于它的语句?这可以让我们简化这一点: 为此: 其中只有在满足条件并运行其“do东西”后才会被调用?相反,如果不满足条件,代码将不会被运行。 我不想滔滔不绝地说亵渎,但我能描述它的最好方式是在每一块“做事情”的末尾都有一个<code>GOTO。 本质上,它与< code>else语句相反。虽然< code>else仅在不满足其他条件时运行,但它仅在满足另一个条件时

  • 我尝试使用numpy阵列执行以下操作: 这应该给出一个结果: 但如果输入向量是numpy数组: 它(预期)返回一个: 问题是,在此之后,我需要将结果转换回numpy数组。 我想知道的是,如果有一个有效的numpy函数可以避免这些来回的转换,那该怎么办?