二维 numpy 数组唯一值的频率
frequency of unique values for 2d numpy array
我有一个以下格式的二维 numpy 数组:
现在如何打印此 2d numpy 数组中唯一元素的频率,使其 returns count([1. 0.]) = 1 and count([0. 1.]) = 1
?我知道如何使用循环来做到这一点,但是有没有更好的 pythonic 方法来做到这一点。
您可以使用 numpy.unique()
,对于 axis=0,并传递 return_counts=True
,它将 return 具有唯一值的元组,以及这些值的计数。
np.unique(arr, return_counts=True, axis=0)
输出:
(array([[0, 1],
[1, 0]]), array([1, 1], dtype=int64))
你可以使用collections.Counter
,它会给你一个以子列表为键,出现次数为值的字典
y = np.array([[1., 0.], [0., 1.], [0., 1.]])
counter = collections.Counter(map(tuple, y))
print(counter[0., 1.]) # 2
我有一个以下格式的二维 numpy 数组:
现在如何打印此 2d numpy 数组中唯一元素的频率,使其 returns count([1. 0.]) = 1 and count([0. 1.]) = 1
?我知道如何使用循环来做到这一点,但是有没有更好的 pythonic 方法来做到这一点。
您可以使用 numpy.unique()
,对于 axis=0,并传递 return_counts=True
,它将 return 具有唯一值的元组,以及这些值的计数。
np.unique(arr, return_counts=True, axis=0)
输出:
(array([[0, 1],
[1, 0]]), array([1, 1], dtype=int64))
你可以使用collections.Counter
,它会给你一个以子列表为键,出现次数为值的字典
y = np.array([[1., 0.], [0., 1.], [0., 1.]])
counter = collections.Counter(map(tuple, y))
print(counter[0., 1.]) # 2