获取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
我有一个数组
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