numpy根据列删除唯一的行

时间:2020-05-30 20:59:48

标签: python numpy

我试图获取一个数组,该数组将根据第一列删除所有唯一行。我的数组看起来像这样,

[['Aaple' 'Red']
 ['Aaple' '0.0']
 ['Banana' 'Yellow']
 ['Banana' '0.0']
 ['Orange' 'Orange']
 ['Pear' 'Yellow']
 ['Pear' '0.0']
 ['Strawberry' 'Red']]

我希望它看起来像这样

[['Aaple' 'Red']
 ['Aaple' '0.0']
 ['Banana' 'Yellow']
 ['Banana' '0.0']
 ['Pear' 'Yellow']
 ['Pear' '0.0']]

从第一列中删除唯一值的位置。我当前的代码如下:

arr = np.array(["Aaple", "Pear", "Banana"])

arr2 = np.array([["Strawberry", "Red"], ["Aaple", "Red"], ["Orange", "Orange"], ["Pear", "Yellow"], ["Banana", "Yellow"]])


arr = arr.reshape(-1,1)
zero_arr = np.zeros((len(arr), 1))
arr = np.column_stack((arr, zero_arr))
combine = np.vstack((arr2, arr))
sort = combine[combine[:,0].argsort()]
#Where the first array printed is sort

通过添加['Aaple' 'Banana' 'Pear'],我能够得到x = sort[:-1][sort[1:] == sort[:-1]],我想保留的行,下一步将是什么?

1 个答案:

答案 0 :(得分:1)

使用pandas可能会更容易:

df = pd.DataFrame(sort, columns=list('ab'))
df[df.groupby('a').a.transform('count')>1].values

结果:

array([['Aaple', 'Red'],
       ['Aaple', '0.0'],
       ['Banana', 'Yellow'],
       ['Banana', '0.0'],
       ['Pear', 'Yellow'],
       ['Pear', '0.0']], dtype=object)
相关问题