You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用NumPy生成指定嵌套格式的描述数组并保持原序?

问题描述

我有一个包含句子ID和descriptions值的NumPy数据集,希望生成格式为[['value'], ['value']]的有序列表,仅包含描述值,且需保持原顺序以便后续与ID匹配。

目前遇到的问题是无法得到该目标格式,实际得到的是['value', 'value'],请问原因是什么?

原始输入数据

[
[UUID('11ea1bca-eb95-4dc8-8cb9-c7d70a806679') 'the quick brown fox']
[UUID('339619ab-bd17-401f-82c8-a927145d52cf')' jumps over the lazy dog']
]

尝试代码

description = np.array([description[1] for description in chunk])

实际输出

['the quick brown fox','jumps over the lazy dog']

期望输出

[['the quick brown fox'],['jumps over the lazy dog']]

环境信息

  • Python 3.8
  • 原始列表来自np.array_split(book_information, chunk_size),对其进行分块遍历
原因分析与解决方案

原因

你写的列表推导式[description[1] for description in chunk]提取的是每个子数组里的单个字符串元素,把这些元素直接转成NumPy数组后,得到的是一维数组(对应Python的一维列表),自然不是每个元素单独成子列表的二维结构。

解决方案

有几种方式可以实现目标格式:

  1. 修改列表推导式,嵌套子列表
    把每个提取的元素包裹进子列表,再转成NumPy数组:

    description = np.array([[desc[1]] for desc in chunk])
    

    这样生成的就是符合要求的二维数组。

  2. 用NumPy索引直接提取二维子数组
    不用列表推导式,直接用NumPy索引语法提取第二列并保留二维结构:

    description = chunk[:, [1]]
    

    [:, [1]]表示提取所有行的第2个元素(索引从0开始),且保持二维结构,比列表推导式更高效。

  3. 对现有一维数组做reshape转换
    如果已经得到了一维数组,可以用reshape转成二维:

    # 先得到一维数组
    desc_1d = np.array([desc[1] for desc in chunk])
    # 转为目标二维结构
    description = desc_1d.reshape(-1, 1)
    

    reshape(-1,1)会自动计算行数,固定列数为1,刚好匹配需求。

内容的提问来源于stack exchange,提问作者MarkK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 07:50:25