python - 如何找到 Numpy 数组的 M 个元素的 N 个最大乘积子数组?

标签 python numpy numpy-ndarray sub-array

我有一个 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/

相关文章:

python - 无法将大小为 (x,) 的数组 reshape 为形状 (x,y,z,1)

php - 我们应该为我们的网络应用程序使用 Pylons 还是 PHP?

python - 将mysql与pythonanywhere一起使用时出现错误4

python - 如何在python中填充矩阵

python - 如何在 Python (cuPy/Numpy) 中将行与相应的列相乘?

python - 将两个不同 dtype 的 numpy 数组组合成一个结构化数组

java - 如何在java中将INDArray转换为Json?

python - 连接两个一维 NumPy 数组

python - 根据 Python 中的另一个数据框选择数据框的行

python - 将混合数据转换为字符串 numpy