小编Sha*_*non的帖子

由标签数组定义的组的 NumPy 最大值

我有两个数组,一个是值列表,一个是与每个值对应的 ID 列表。有些 ID 有多个值。我想创建一个新数组,其中包含为每个 id 记录的最大值,该数组的长度等于唯一 id 的数量。

使用for循环的示例:

import numpy as np

values = np.array([5, 3, 2, 6, 3, 4, 8, 2, 4, 8])
ids = np.array([0, 1, 3, 3, 3, 3, 5, 6, 6, 6])

uniq_ids = np.unique(ids)
maximums = np.ones_like(uniq_ids) * np.nan

for i, id in enumerate(uniq_ids):
    maximums[i] = np.max(values[np.where(ids == id)])

print(uniq_ids)
print(maximums)
Run Code Online (Sandbox Code Playgroud)
[0 1 3 5 6]
[5. 3. 6. 8. 8.]
Run Code Online (Sandbox Code Playgroud)

是否可以对其进行矢量化以使其运行速度更快?我正在想象一种可以仅使用 NumPy 函数创建“最大值”数组的单行代码,但我无法想出任何可行的方法。

python numpy

5
推荐指数
2
解决办法
435
查看次数

标签 统计

numpy ×1

python ×1