为了账号安全,请及时绑定邮箱和手机立即绑定

如何获取N维np数组中唯一数组元素的数量?

如何获取N维np数组中唯一数组元素的数量?

RISEBY 2023-07-05 11:09:45
我有一个包含 str 值的 2D np 数组。我想获得组成这个二维数组的唯一数组(行)的计数。这将是示例输入:array([[A, B, C],       [A, B, C],       [C, E, F],       [F, J, K]])我希望能够获得每一行的唯一计数:[A, B, C] -> 2[C, E, F] -> 1[F, J, K] -> 1谢谢。
查看完整描述

1 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

axis=0对于列表列表,您可以通过使用选项(指定行)以及numpy.unique()函数和选项来获取行数return_counts=True

>>> a = np.array([(1,2,3),(1,2,3),(3,4,5),(5,6,7)])

>>> np.unique(a, return_counts=True, axis=0)

(array([[1, 2, 3],

       [3, 4, 5],

       [5, 6, 7]]), array([2, 1, 1]))

第一个返回值是唯一行,第二个返回值是这些行的计数。如果没有该return_counts=True选项,您将只能获得第一个返回值。如果没有该axis=0选项,整个数组将被展平以计算唯一元素的数量。axis=0指定应展平行(如果它们已经超过 1D),然后将其视为唯一值。


如果您可以使用元组而不是行列表,那么您可以numpy.unique()与 axis 选项一起使用。


这篇文章解释了如何使用 numpy 数组的元组列表。


放在一起,它应该看起来像这样:


>>> l = [(1,2,3),(1,2,3),(3,4,5),(5,6,7)]

>>> a = np.empty(len(l), dtype=object)

>>> a

array([None, None, None, None], dtype=object)

>>> a[:] = l

>>> a

array([(1, 2, 3), (1, 2, 3), (3, 4, 5), (5, 6, 7)], dtype=object)

>>> np.unique(a, return_counts=True)

(array([(1, 2, 3), (3, 4, 5), (5, 6, 7)], dtype=object), array([2, 1, 1]))


查看完整回答
反对 回复 2023-07-05
  • 1 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信