我试图获得相当于np.unique,但带有'axis = 1'选项。使用numpy获得每行唯一计数〜和〜唯一值
a = np.array([[8, 8, 8, 5, 8],
[8, 2, 0, 8, 8],
[4, 5, 4, 2, 4],
[4, 6, 5, 2, 6]])
我正在寻找每行最高计数值并将其保存为一维矢量。基本上“每行最常见的是哪个值”。
正确答案:[8,8,4,6]在这个例子中。
现在我做这样的事情:
y = np.zeros(len(a))
for i in xrange(len(a)):
[u,cnt] = np.unique(a[i,:],return_counts=True)
# pick the value from 'u' that is seen the most.
y[i] = u[np.argmax(cnt)]
遍历数千行的时候这给预期的效果,但在Python很慢。我正在寻找完全矢量化的方法。
我发现unique row elements职位,但它并不完全做我想做的(,要么我不是很聪明到它Munge时间成所需的形式或直接不适用。)
感谢您在提前为您提供任何帮助。
请注意,唯一不能以您想要的方式进行矢量化:每行可能有不同数量的unqiue元素,因此返回将不得不为NumPy中的选项。 – Jaime