python - 计算每个numpy数组列中的唯一值

标签 python arrays python-3.x numpy

在大熊猫中,可以简单地使用DataFrame.nunique来获取所请求轴上不同观察值的数量。我一直在尝试对具有4列的numpy数组执行相同的操作。但是,我对(部分)失败感到沮丧。

最初,我尝试使用np.unique(a, axis=0),但这会返回一个具有唯一值的数组。然后,我尝试将其与np.size()结合使用,该方法可以工作,但一次仅返回一列的计数。

如何获取所有列的计数并将其存储在新数组中?理想情况下,我想一次性执行此操作,而不使用for-loop

答案可能很简单,但仍然使我难以理解!

最佳答案

对每个numpy数组列中的唯一值进行计数需要沿零轴进行切片和ufunc操作。这可以使用两种方法来完成:

a = np.array([[1, 0, 0], [1, 0, 0], [2, 3, 4]])

def nunique_percol_sort(a):
    b = np.sort(a,axis=0)
    return (b[1:] != b[:-1]).sum(axis=0)+1

def nunique_percol_bincount(a):
    n = a.max()+1
    a_off = a+(np.arange(a.shape[1]))*n
    M = a.shape[1]*n
    return (np.bincount(a_off.ravel(), minlength=M).reshape(-1,n)!=0).sum(1)


问题发布后,该问题由用户Divakar在单独的post中提供。

关于python - 计算每个numpy数组列中的唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49148364/

相关文章:

javascript - 如何在我的数组中获取该用户的真实索引?

python - 将文件夹从 Google Colab 移动到 Google Drive

python - 除了 locals() 字典之外的函数内变量的信息

python - 有副作用的 setter/getter

javascript - 如何将一个数组值链接到另一个数组值?

python - 未显示文档字符串中的继承属性

c++ - 调整任何动态数组大小的函数

python - 按字母索引字符串,包括变音符号

python - 在 Python 中从 bulbs.neo4jserver 导入图形时出错

python - vs代码中的热键可在python交互式窗口和事件编辑器之间切换?