我试图获取一个数组,该数组将根据第一列删除所有唯一行。我的数组看起来像这样,
[['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]]
,我想保留的行,下一步将是什么?
答案 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)