代码之家  ›  专栏  ›  技术社区  ›  Raman Khurana

在笨拙的数组中获取最小值的所有位置

  •  1
  • Raman Khurana  · 技术社区  · 4 年前

    我有一个awkward1数组,我想从中提取最小值和最大值的所有位置。然而,当我使用以下内容时,我只能提取第一次出现的内容,而不是全部。有可能得到所有的指数吗。

    >>> a1=ak.Array([[], [], [1, 1, 0, 1, 1, 0, 0], [], [], [], [], [0, 0], [], [-1, -1, -1, -1]])
    >>> ak.to_list(ak.argmin(a1,axis=-1, keepdims=True))
    [[None], [None], [2], [None], [None], [None], [None], [0], [None], [0]]
    

    我需要的输出是:

    [[None], [None], [2,5,6], [None], [None], [None], [None], [0,1], [None], [0,1,2,3]]
    

    在类似的行中,除了argmin或argmax之外,还可以执行类似argN(array,number,axis=-1,keepdims=True)的操作, 在这种特殊情况下,当number=0时,它可以变为argmin,当numbers=1时,它变为argmax。

    我试图查看ak.where,但我无法得到任何提示,如果使用ak.where可行。文件显示,ak.where将接受ak。布尔值数组

    >>> a1==1
    
    <Array [[], [], ... False, False, False]] type='10 * var * bool'>
    

    因此,我尝试了:

    >>> ak.where((a1==1))
    

    我得到的错误是: 返回to_numpy(array.toRegularArray(),allow_mising=allow_mision) ValueError:在ListOffsetArray64中,无法转换为RegularArray,因为子数组长度不规则

    ( https://github.com/scikit-hep/awkward-1.0/blob/0.3.1/src/cpu-kernels/operations.cpp#L902 )

    0 回复  |  直到 4 年前
    推荐文章