这个问题最好通过一个例子来描述(就像大多数情况一样)。
我有以下示例列表:
test = ['a','a','b','b','c','b']
我想获得一个 pandas 数组的列表,其长度为输入列表的长度(在本例中为 6),其中每个数组的长度为“test”中唯一值的长度,在这种情况下为 3(“a”,“b”) ' 和 'c'),它包含零和一个 1,对应于唯一值的哪个值(这里的顺序显然很重要,所以如果对唯一值进行排序,或者更好的顺序将是因为值出现在第一次,在示例中两个顺序一致)输入列表包含的每个元素。
输出将是一个数组列表,如上面的示例所示:
(1,0,0)
(1,0,0)
(0,1,0)
(0,1,0)
(0,0,1)
(0,1,0)
其他示例:
test = ['a', 'g', 'b']
(1,0,0)
(0,1,0)
(0,0,1)
如果是任意的,我还需要与输出唯一值相对应的顺序。最好是因为唯一元素是在列表中第一次遇到的。在本例中为“a”、“g”、“b”。
谢谢
最佳答案
Pandas 有一个内置函数 get_dummies
,可能会满足您的目的:
>>> test = ['a','a','b','b','c','b']
>>> import pandas as pd
>>> pd.get_dummies(test)
a b c
0 1 0 0
1 1 0 0
2 0 1 0
3 0 1 0
4 0 0 1
5 0 1 0
如果由于某种原因,您确实需要一个 numpy.ndarray
对象列表,您始终可以:
>>> list(pd.get_dummies(test).values)
[array([1, 0, 0], dtype=uint8), array([1, 0, 0], dtype=uint8), array([0, 1, 0], dtype=uint8), array([0, 1, 0], dtype=uint8), array([0, 0, 1], dtype=uint8), array([0, 1, 0], dtype=uint8)]
>>>
关于python - 如何从字符串列表中导出二进制数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48618935/