我有一个尴尬的数组,我想从中提取最小值和最大值的所有位置。但是,当我使用以下内容时,我只能提取第一次出现,而不是全部。是否有可能获得所有索引。
>>> 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,在 number = 1 时变为 argmax,对于这种特殊情况。
我试图查看 ak.where,但如果使用 ak.where 可行,我无法得到任何提示。文档说,ak.where 将接受 ak.Array of booleans
>>> a1==1
<Array [[], [], ... False, False, False]] type='10 * var * bool'>
因此我尝试了:
>>> ak.where((a1==1))
我得到的错误是: return to_numpy(array.toRegularArray(), allow_missing=allow_missing) ValueError: in ListOffsetArray64, cannot convert to RegularArray because subarray lengths are not regular
(https://github.com/scikit-hep/awkward-1.0/blob/0.3.1/src/cpu-kernels/operations.cpp#L902)