获取numpy中独特元素的数量

Get amount of unique elements in numpy

我有一个数组
arr = np.array([[1,1,2], [1,2,3]]).
我想获取每行的唯一元素数量并计算均值
我可以做到 np.array([len(np.unique(row)) for row in arr]).mean().
但似乎,这是一种缓慢的方式。还有其他更快的方法吗?

set(arr.flatten()) 将创建您想要的结果。虽然不确定它有多快。

输出:
{1, 2, 3}

编辑:
你想要唯一元素的数量,所以你把整个东西包装在 len()

您可以使用以下内容:

import numpy as np

arr = np.array([[1, 1, 2], [1, 2, 3]])


mean = np.apply_along_axis(lambda row: len(set(row)), axis=1, arr=arr).mean()
>> mean = 2.5

这是据我所知最快的方法。

import numpy as np
import pandas as pd

# Number of unique elements row wise then mean
def unique(x):
    df = pd.DataFrame(x.T)
    return df.nunique().mean()

arr = np.array([[1,1,2], [1,2,3]])

print(unique(arr))

输出:

2.5