Skip to main content
 首页 » 编程设计

python之这是扁平化的正确用法吗

2025年05月04日16Renyi-Fan

我正在尝试使用以下方法展平列表:

wd = ['this' , 'is'] 
 
np.asarray(list(map(lambda x : list(x) , wd))).flatten() 

返回:

array([['t', 'h', 'i', 's'], ['i', 's']], dtype=object) 

当我需要一个字符数组时:['t','h','i','s','i','s']

flatten 的使用是否正确?

请您参考如下方法:

不,这不是 numpy.ndarray.flatten 的正确用法。

二维 NumPy 数组必须是矩形的,否则它们将被转换为对象数组(否则会抛出异常)。使用对象数组展平将无法正常工作(因为它不会展平“对象”)并且矩形是不可能的,因为你的单词有不同的长度。

在处理字符串(或字符串数​​组)时,NumPy 根本不会展平它们,无论是在您创建数组时,还是在您尝试“展平”它时:

>>> import numpy as np 
>>> np.array(['fla', 'tten']) 
array(['fla', 'tten'], dtype='<U4') 
>>> np.array(['fla', 'tten']).flatten() 
array(['fla', 'tten'], dtype='<U4') 

幸运的是,您可以简单地使用“普通”Python 功能来扁平化可迭代对象,仅举一个例子:

>>> wd = ['this' , 'is'] 
>>> [element for sequence in wd for element in sequence] 
['t', 'h', 'i', 's', 'i', 's'] 

您可能想查看以下 Q+A 以获得更多解决方案和解释: