Python 对Numpy(键、值)数组应用多数投票
我有一个Numpy数组,其中第一列是ID,第二列是分类。我想申请多数投票,这样每个ID只有一个分类。当分类频率为50-50时,我想随机选择一个分类 我的数组如下所示:Python 对Numpy(键、值)数组应用多数投票,python,numpy,Python,Numpy,我有一个Numpy数组,其中第一列是ID,第二列是分类。我想申请多数投票,这样每个ID只有一个分类。当分类频率为50-50时,我想随机选择一个分类 我的数组如下所示: >>> print(myArray) array([ [10, 0], [10, 1], [101, 0], [101, 0], [101, 2], [102, 0], [102, 0], [103, 0], [103, 1], [103, 1]]) 我希望它变成这样(基于多数票) 或 一种方法是将numpy数
>>> print(myArray)
array([
[10, 0],
[10, 1],
[101, 0],
[101, 0],
[101, 2],
[102, 0],
[102, 0],
[103, 0],
[103, 1],
[103, 1]])
我希望它变成这样(基于多数票)
或
一种方法是将numpy数组转换为defaultdict,然后再转换回numpy数组
In [1]: from collections import defaultdict
In [2]: import numpy as np
In [3]: arr = np.array([[10, 0], [10, 1], [10, 1]])
In [4]: arr
Out[4]:
array([[10, 0],
[10, 1],
[10, 1]])
In [11]: darr = defaultdict(list)
In [12]: for item in arr:
...: a,b = item
...: darr[a].append(b)
...:
In [13]: darr
Out[13]: defaultdict(list, {10: [0, 1, 1]})
因此,在转换为默认dict后,您可以迭代dict并为每个键选择所需的任何值 仅供参考,您可以直接迭代这些对:
对于arr中的a、b:
使用pandas。只需通过groupby
操作即可生成所需内容。@alkasm您能举个例子吗?
>>> print(myArray)
array([
[10, 1],
[101, 0],
[102, 0],
[103, 1]])
In [1]: from collections import defaultdict
In [2]: import numpy as np
In [3]: arr = np.array([[10, 0], [10, 1], [10, 1]])
In [4]: arr
Out[4]:
array([[10, 0],
[10, 1],
[10, 1]])
In [11]: darr = defaultdict(list)
In [12]: for item in arr:
...: a,b = item
...: darr[a].append(b)
...:
In [13]: darr
Out[13]: defaultdict(list, {10: [0, 1, 1]})