python - 使用 numpy Python 获取最小索引
问题描述
我正在尝试获取函数的索引值。但我想得到最小值而不是最大值,就像 post: post一样。我试图将下面的函数转换为最小值,而不是最大值来获取索引。
最大值:
a = numpy.array([11, 2, 33, 4, 5, 68, 7])
b = numpy.array([0, 4])
min = numpy.minimum.reduceat(a,b)
索引功能
def numpy_argmin_reduceat_v2(a, b):
n = a.min()+1 # limit-offset
id_arr = np.zeros(a.size,dtype=int)
id_arr[b[1:]] = 1
shift = n*id_arr.cumsum()
sortidx = (a+shift).argsort()
grp_shifted_argmin = np.append(b[1:],a.size)-1
return sortidx[grp_shifted_argmin] - b
解决方案
至少,您需要每个组中的第一项而不是最后一项。这是通过修改来完成的grp_shifted_argmin
:
def numpy_argmin_reduceat_v2(a, b):
n = a.max() + 1 # limit-offset
id_arr = np.zeros(a.size,dtype=int)
id_arr[b[1:]] = 1
shift = n*id_arr.cumsum()
sortidx = (a+shift).argsort()
grp_shifted_argmin = b
return sortidx[grp_shifted_argmin] - b
这会正确返回每个子列表中最小值的索引:
a = numpy.array([11, 2, 33, 4, 5, 68, 7])
b = numpy.array([0, 4])
print(numpy_argmin_reduceat_v2(a, b))
# [1 0]
print([np.argmin(a[b[0]:b[1]]), np.argmin(a[b[1]:])])
# [1, 0]
推荐阅读
- javascript - 在 JavaScript 中使用数组获取随机十六进制
- google-analytics - Google Analytics:添加指标会返回不同的结果
- python - 将项目追加到列表中,即 dict 值
- python - (AttributeError: __enter__) when using __new__ magic method
- c# - 部署多个函数时 Azure 函数依赖项注入失败
- python - 将变量传递给函数时Python子进程无效语法
- django - /account/ 序列项 1 处的 TypeError:期望一个类似字节的对象,找到 NoneType
- r - R粘贴具有特定前缀的所有变量
- python - 按条件计数应用于 Pandas 中的同一列
- git - 基于另一个特性分支合并特性分支,回到master