numpy在数组中的重复值中选择固定数量的值

Fab*_*nna 4 python arrays numpy

从具有重复值的简单数组开始:

a = np.array([2,3,2,2,3,3,2,1])
Run Code Online (Sandbox Code Playgroud)

我试图从中选择最多2个唯一值.生成的数组将显示为:

b = np.array([2,3,2,3,1])
Run Code Online (Sandbox Code Playgroud)

无论物品的顺序如何.到目前为止,我试图找到唯一的值:

In [20]: c = np.unique(a,return_counts=True)

In [21]: c
Out[21]: (array([1, 2, 3]), array([1, 4, 3]))
Run Code Online (Sandbox Code Playgroud)

这很有用,因为它也会返回值的频率,但我仍然坚持按频率过滤.

unu*_*tbu 5

您可以使用np.repeatuniquescounts 的数组生成所需的数组:

import numpy as np

a = np.array([2,3,2,2,3,3,2,1])
uniques, count = np.unique(a,return_counts=True)
np.repeat(uniques, np.clip(count, 0, 2))
Run Code Online (Sandbox Code Playgroud)

产量

array([1, 2, 2, 3, 3])
Run Code Online (Sandbox Code Playgroud)

np.clip用于强制所有值在count0到2之间.因此,每个唯一值最多可以获得两个值.