Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对Numpy(键、值)数组应用多数投票_Python_Numpy - Fatal编程技术网

Python 对Numpy(键、值)数组应用多数投票

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数

我有一个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数组转换为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]})