![](/img/trans.png)
[英]numpy/pandas: How to convert a series of strings of zeros and ones into a matrix
[英]efficient way to convert pandas series of strings to numpy frequency matrix
我有:
我想創建一個 numpy 矩陣,其中每一行對應於系列中同一行的字符串,每一列對應於列表中相同索引處的字符。
例子:
series: [[ab],[ac],[aa]]
chars = [a,b,c]
result = [[110],[101],[200]]
這是我現在的做法:
def create_char_matrix(strings, symbol_list):
mat = np.zeros((strings.shape[0],len(symbol_list)))
for i, line in enumerate(strings):
for c in line:
mat[i,symbol_list.index(c)] += 1
return mat
這不是很快,考慮到通常有比嵌套 for 循環更好的解決方案。
關於如何加速這個過程的任何想法?
您可以將字符串拆分為字符,然后進行crosstab
:
s = pd.Series(['ab','ac','aa'])
chars=['a','b','c']
a = s.str.split('').str[1:-1].explode()
pd.crosstab(a.index, a).reindex(chars, axis=1, fill_value=0).values
Output:
array([[1, 1, 0],
[1, 0, 1],
[2, 0, 0]])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.