【发布时间】:2021-09-07 09:55:47
【问题描述】:
我正在尝试编写一个函数来计算每个数组中最大的下降量。下面的函数在最大值和最小值之间进行计算,但它没有得到我正在寻找的预期输出。 calc(C) 的结果应该是 -62,因为 11,66,45,4 数组中的值从 66 下降到 4,导致下降到低于 66 的 -62 点。我如何才能修复下面的函数?示例代码来自:issue
def calc(arr):
try:
_min = min(arr)
index_min = np.where(arr == _min)[0][0] #first occurence
_max = max(arr[:index_min])
print(_min-_max)
except:
print('No drawdown')
A = np.array([0,2,5,44,-12,3,-5])
B = np.array([0,10,-110,23,45,66,30,2,12])
C = np.array([0,10,11,-23,45,11,66,45,4,12])
D = np.array([0,5,6,7,8])
E = np.array([0,10,5,6,8])
calc(A)
calc(B)
calc(C)
calc(D)
calc(E)
输出:
-56
-120
-34
No drawdown
No drawdown
预期输出:
-56
-120
-62
No drawdown
-5
【问题讨论】:
标签: arrays python-3.x function numpy indexing