【问题标题】:how to remove duplicates including strings in numpy array?如何删除numpy数组中包含字符串的重复项?
【发布时间】:2019-02-13 10:18:47
【问题描述】:

我想从 numpy 数组中删除重复项。

>data = np.array([[1,"a",3,3,4],
                  [1,8,9,9,4],
                  [1,"a",3,3,4]])

>new_array = [tuple(row) for row in data]
>uniques = np.unique(new_array)
>uniques

output: array(['1', '3', '4', '8', '9', 'a'], dtype='<U1')

但我想要的是

output: np.array([[1,"a",3,3,4],[1,8,9,9,4]])

我该怎么做?谢谢。

【问题讨论】:

    标签: python numpy unique


    【解决方案1】:

    NumPy 不擅长处理混合数据类型的数组,那么使用 pandas drop_duplicates 来代替如何?

    import pandas as pd
    
    data = [[1,"a",3,3,4],[1,8,9,9,4], [1,"a",3,3,4]]
    pd.DataFrame(data).drop_duplicates().values
    
    # array([[1, 'a', 3, 3, 4],
    #        [1, 8, 9, 9, 4]], dtype=object)
    

    【讨论】:

    • 谢谢,我试过了,但它仍然返回array([['1', 'a', '3', '3', '4'], ['1', '8', '9', '9', '4']], dtype=object)
    • @user9191983 请使用data = np.array([[1,"a",3,3,4], [1,8,9,9,4], [1,"a",3,3,4]], dtype=object) 初始化您的数据,否则将不起作用。
    • 成功了!谢谢,你给了我一些比你真正的意思更多的提示!
    • @user9191983 不客气!如果您觉得有帮助,也可以upvote the answer,谢谢!
    【解决方案2】:

    使用vstack:

    print(np.vstack({tuple(row) for row in data}))
    

    输出:

    [['1' 'a' '3' '3' '4']
     ['1' '8' '9' '9' '4']]
    

    您不能将它们设为整数,因为 numpy 不支持混合类型的数据。

    【讨论】:

      猜你喜欢
      • 2020-02-04
      • 2017-12-30
      • 2016-07-16
      • 2020-02-14
      • 2018-11-21
      • 1970-01-01
      • 2018-07-05
      • 2012-09-15
      • 1970-01-01
      相关资源
      最近更新 更多