Python 如何将字符串的numpy数组转换为集合的numpy数组以使用MultiLabelBinarizer?

Python 如何将字符串的numpy数组转换为集合的numpy数组以使用MultiLabelBinarizer?,python,arrays,numpy,encoding,scikit-learn,Python,Arrays,Numpy,Encoding,Scikit Learn,我有这样一个numpy数组: l1 = (['United States', 'England', 'South Africa']). 有时它的值可能大于1: l1 = ([['United States','South Korea'], 'England', 'South Africa']) 我想使用MultiLabelBinarizer对这些值进行编码。根据scikit学习文档中的fit_transform文档。参数应为 y:iterable of iterables 一组标签,用于每

我有这样一个numpy数组:

l1 = (['United States', 'England', 'South Africa']). 
有时它的值可能大于1:

l1 = ([['United States','South Korea'], 'England', 'South Africa'])
我想使用MultiLabelBinarizer对这些值进行编码。根据scikit学习文档中的fit_transform文档。参数应为

y:iterable of iterables 一组标签,用于每个示例的任何可排序和哈希对象。如果设置了classes参数,则不会迭代y

如何将列表和单个字符串的numpy数组转换为集合

我试过这个:

value = [set(v) for v in l1]
list_2sets = np.asarray(value)
但它似乎不能正常工作

问题是,我没有把所有国家的价值观都考虑在内。如果我有这个,我会尝试以下方法:

 mlb.fit_transform(headings.split(', ') for headings in l1)
作为所有考虑值列表的标题:

['England','Spain', ...]

但到目前为止我还没有这些值,所以我想尝试应用没有“标题”的MLB

尝试按如下方式预处理字符串数组:

In [50]: l1 = [[x] if isinstance(x, (str)) else x for x in l1]

In [51]: l1
Out[51]: [['United States', 'South Korea'], ['England'], ['South Africa']]
对于Python2.x:

In [50]: l1 = [[x] if isinstance(x, (str, unicode)) else x for x in l1]

In [51]: l1
Out[51]: [['United States', 'South Korea'], ['England'], ['South Africa']]