Как удалить дубликаты, включая строки в массиве NumPy? - PullRequest
0 голосов
/ 13 февраля 2019

Я хочу удалить дубликаты из массива 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]])

Как я могу это сделать? Спасибо.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

NumPy плохо работает с массивами со смешанными типами данных, так как насчет использования панд 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)
0 голосов
/ 13 февраля 2019

Использовать vstack:

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

Вывод:

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

Вы не можете сделать их целыми числами, потому что numpy не поддерживает смешанные данные.

...