numpy:查找数组中每个唯一元素的计数
numpy: find the count of each unique element in an array
我有一个包含许多重复元素的数组,我想找到重复次数最多的非零元素的计数和值。我有点让它工作,但我不确定这是否是在 python.
中执行此操作的正确方法
一些测试代码:
import numpy as np
x = np.array([0, 0, 0, 10, 10, 10, 10, 10])
l = list()
for i in np.unique(x):
l.extend((np.count_nonzero(x[x==i]),))
maximum_times = np.max(l)
这告诉我最大元素重复的次数,但它没有告诉我那个元素是什么,也许使用 for 循环不是一个好主意,但我想不出任何其他 pythonic解决方案。
正如 Ashwini 指出的那样,您可以使用 return_counts=True
。
x = np.array([0, 0, 0, 10, 10, 10, 10, 10])
elements, repeats = np.unique(x, return_counts=True)
index = repeats.argmax()
elem = elements[index]
print "Max elem is " + str(elem) + " with " + str(repeats[index]) + " repetitions."
我有一个包含许多重复元素的数组,我想找到重复次数最多的非零元素的计数和值。我有点让它工作,但我不确定这是否是在 python.
中执行此操作的正确方法一些测试代码:
import numpy as np
x = np.array([0, 0, 0, 10, 10, 10, 10, 10])
l = list()
for i in np.unique(x):
l.extend((np.count_nonzero(x[x==i]),))
maximum_times = np.max(l)
这告诉我最大元素重复的次数,但它没有告诉我那个元素是什么,也许使用 for 循环不是一个好主意,但我想不出任何其他 pythonic解决方案。
正如 Ashwini 指出的那样,您可以使用 return_counts=True
。
x = np.array([0, 0, 0, 10, 10, 10, 10, 10])
elements, repeats = np.unique(x, return_counts=True)
index = repeats.argmax()
elem = elements[index]
print "Max elem is " + str(elem) + " with " + str(repeats[index]) + " repetitions."