我有一个 Numpy 数组,我需要找到 M 个元素的 N 个最大乘积子数组。例如,我有数组 p = [0.1, 0.2, 0.8, 0.5, 0.7, 0.9, 0.3, 0.5]
,我想找到 3 个元素的 5 个最高乘积子数组。有没有一种“快速”的方法可以做到这一点?
最佳答案
这是另一种快速的方法:
import numpy as np
p = [0.1, 0.2, 0.8, 0.5, 0.7, 0.9, 0.3, 0.5]
n = 5
m = 3
# Cumulative product (starting with 1)
pc = np.cumprod(np.r_[1, p])
# Cumulative product of each window
w = pc[m:] / pc[:-m]
# Indices of the first element of top N windows
idx = np.argpartition(w, n)[-n:]
print(idx)
# [1 2 5 4 3]
关于python - 如何找到 Numpy 数组的 M 个元素的 N 个最大乘积子数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61915125/