【问题标题】:Getting the index of the min values Numpy Python获取最小值的索引 Numpy Python
【发布时间】:2021-08-16 23:51:45
【问题描述】:

下面的函数将每个值分成由索引indexL_list 中的值分隔的块。因此它输出索引3-5(即-5)和值的索引之间的最小值。 numpy_argmin_reduceat(a, b)Drawdown 函数都按计划执行,但是numpy_argmin_reduceat(a, b) 的索引输出有问题Drawdown 的最小值与numpy_argmin_reduceat(a, b) 的输出索引不匹配。我该怎么办能解决这个问题吗? 数组:

import numpy as np
# indexes          0, 1, 2,3,4, 5, 6,7, 8, 9,10, 11, 12
L_list = np.array([10,20,30,0,0,-5,11,2,33, 4, 5, 68, 7])
index =  np.array([3,5,7,11])

功能:

#getting the minimum values
Drawdown = np.minimum.reduceat(L_list,index+1)

#Getting the min Index 
def numpy_argmin_reduceat(a, b):
    n = a.max() + 1  # limit-offset
    id_arr = np.zeros(a.size,dtype=int)
    id_arr[b] = 1
    shift = n*id_arr.cumsum()
    sortidx = (a+shift).argsort()
    grp_shifted_argmin = b
    idx =sortidx[grp_shifted_argmin] - b
    min_idx = idx +index
    return min_idx


min_idx =numpy_argmin_reduceat(L_list,index+1)
#printing function
DR_val_index = np.array([np.around(Drawdown,1), min_idx])
DR_result = np.apply_along_axis(lambda x: print(f'Min Values: {x[0]} at index: {x[1]}'), 0, DR_val_index)

输出

Min Values: -5 at index: 4
Min Values: 2 at index: 6
Min Values: 4 at index: 8
Min Values: 7 at index: 11

预期输出:

Min Values: -5 at index: 5
Min Values: 2 at index: 7
Min Values: 4 at index: 9
Min Values: 7 at index: 12

【问题讨论】:

    标签: python arrays numpy indexing numpy-ndarray


    【解决方案1】:

    使用np.r_重新定义索引,然后对索引进行切片和压缩以创建定义块的开始和结束索引的区间,然后遍历这些区间并选择L_list中与区间对应的块,然后使用argmin找到最小值的索引并将其添加到chunk的起始索引中以获得L_list中的实际索引

    i = np.r_[index[0]-1, index[1:], len(L_list)-1] + 1
    for x, y in zip(i[:-1], i[1:]):
        i_min = x + L_list[x:y].argmin()
        print('Min Value:', L_list[i_min], 'at index:', i_min)
    

    Min Value: -5 at index: 5
    Min Value: 2 at index: 7
    Min Value: 4 at index: 9
    Min Value: 7 at index: 12
    

    【讨论】:

      猜你喜欢
      • 2021-08-13
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 2019-06-06
      • 2019-02-02
      • 2021-07-09
      • 2014-07-09
      • 2021-08-06
      相关资源
      最近更新 更多