首页 > 解决方案 > 创建numpy数组以仅包含其中列表的唯一元素的方法

问题描述

我有一个 numpy 数组 A ,它看起来像这样:

array([list(['nan', 'nan']),
       list(['nan', 'nan', 'apple', 'apple', 'banana', 'nan', 'nan']),
       list(['red', 'red']), ...,
       list(['nan', 'festival'])], dtype=object)

我想将其转换为每个列表仅包含唯一元素的数组。例如,我希望将上面的数组转换为:

['nan'],['nan','apple','banana'],['red'],...,['nan','festival']

我试过这样做:

output = []
for i in A:
    output.append(np.unique(i))
output

我不需要这样做的输出,目前看起来像这样:

[array(['nan'], dtype='<U3'),
 array(['nan'], dtype='<U3'),
 array(['nan'], dtype='<U3'),....]

可以做什么?

标签: pythonlistnumpy

解决方案


arr=np.array([list(['nan', 'nan']),
       list(['nan', 'nan', 'apple', 'apple', 'banana', 'nan', 'nan']),
       list(['red', 'red']), ...,
       list(['nan', 'festival'])], dtype=object)

通过列表理解尝试:

out=[np.unique(x).tolist() for x in arr]

或者

out=[list(np.unique(x)) for x in arr]

输出out

[['nan'], ['apple', 'banana', 'nan'], ['red'], [Ellipsis], ['festival', 'nan']]

推荐阅读