python - 将列表列转换为二维 numpy 数组

标签 python arrays pandas list numpy

我正在对 Pandas 数据框进行一些操作。对于某一列,我需要将每个单元格转换为 numpy 数组,这并不难。最终目标是获得一个二维数组作为整个列的结果。但是,当我执行以下操作时,我得到了一个一维数组,并且无法识别内部数组。

df = pd.DataFrame({'col': ['abc', 'def']})
mapping = {v: k for k, v in enumerate('abcdef')}
df['new'] = df['col'].apply(lambda x: list(x))
df['new'].apply(lambda x: np.array([mapping[i] for i in x])).values

这给出:

array([array([0, 1, 2]), array([3, 4, 5])], dtype=object)

形状为(2,),表示内部数组不被识别。

如果我执行 s.reshape(2,-1),我会得到 (2,1) 而不是 (2,3) > 形状。

感谢任何帮助!

<小时/>

澄清:

以上只是一个玩具示例。我正在做的是使用 IMDB 数据集对机器学习进行预处理。我必须将评论列中的每个值转换为词嵌入(即 numpy 数组)。现在的挑战是将所有这些数组作为二维数组取出,以便我可以在我的机器学习模型中使用它们。

最佳答案

我认为直接从列表值创建一个数组会更好。

 df
   col        new
0  abc  [a, b, c]
1  def  [d, e, f]

arr = np.array(df['new'].tolist())
arr
# array([['a', 'b', 'c'],
#        ['d', 'e', 'f']], dtype='<U1')

arr.shape
# (2, 3)

重要免责声明:仅当子列表都具有相同数量的元素时,这才有效。如果不是,则意味着它们是参差不齐的数组,并且 numpy 将无法使用有效的内存格式来表示数组(因此,dtype='object')。

关于python - 将列表列转换为二维 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54225293/

相关文章:

python - 遍历多个文件并计算多个字符串

python - nltk 无法解释斯坦福解析器输出的语法类别 PRP$

python - 获取我自己的模块中定义的所有方法

javascript - 在 Node.js 中使用 Express 渲染数组中的每个对象

python - pandas 中所有 NaN 的总和返回零?

python - 搜索包含数字python的字符串

c++ - 多维数组计算

ruby - 在数组中找到最小的缺失正整数

python - 如何在 python 中快速将 xlsx 文件转换为 csv 文件?

python - 我如何检查数据框中行之间的相似性并添加一列作为计数器和增量。当行匹配时呢?