【发布时间】:2022-01-19 09:42:54
【问题描述】:
我有两个数组,一个保存一系列年份,另一个保存一些数量。我想研究每年数量翻倍需要多长时间。
为此我写了这段代码:
years = np.arange(2020, 2060)
qma = np.array([8.00000000e+13, 8.14928049e+13, 8.30370113e+13, 8.46353044e+13,
8.62905581e+13, 8.80058517e+13, 8.97844887e+13, 9.16300175e+13,
9.35462542e+13, 9.55373083e+13, 9.76076116e+13, 9.97619497e+13,
1.02005499e+14, 1.04343864e+14, 1.06783128e+14, 1.09329900e+14,
1.11991375e+14, 1.14775397e+14, 1.17690539e+14, 1.20746183e+14,
1.23952624e+14, 1.27321176e+14, 1.30864305e+14, 1.34595778e+14,
1.38530838e+14, 1.74048570e+14, 1.92205500e+14, 2.14405932e+14,
2.42128686e+14, 2.77655470e+14, 3.24688168e+14, 3.89624819e+14,
4.84468500e+14, 6.34373436e+14, 9.74364148e+14, 2.33901669e+15,
1.78934647e+16, 4.85081278e+20, 8.63469750e+21, 2.08204297e+22])
def doubling_year(idx):
try:
return years[qma >= 2*qma[idx]].min()
except ValueError:
return np.nan
years_until_doubling = [doubling_year(idx) - years[idx]
for idx in range(len(years))]
这正如我所期望的那样工作,但是必须为本质上是单线的东西定义一个命名函数感觉不对。有没有更简洁、更成功的方法来复制这种行为?
【问题讨论】:
-
你研究过
np.amin的文档吗?