You need to enable JavaScript to run this app. 如何将多个ndarray合并为单个数组?np.array转换结果不符的解决办法
优惠活动
大模型
产品
解决方案
定价
更多

如何将多个ndarray合并为单个数组?np.array转换结果不符的解决办法

问题本质

你通过np.array(my_list, dtype=object)得到带list(...)标识的输出,核心原因是两个子列表长度不一致(第一行3个元素、第二行2个元素):

  • 当所有子列表长度完全一致时,numpy可自动对齐嵌套维度,直接生成规则的二维字符串数组,输出形态和你的期望完全匹配
  • 当子列表长度无法对齐为规则二维结构时,numpy会自动退化为一维对象数组,直接将每个子列表作为单个Python列表对象存入外层数组,最终输出就会带上原生Python列表的list(...)标识,和numpy子数组的展示形态存在差异
可复现的解决方案

通过手动初始化外层对象数组、逐元素赋值转换后的子数组,即可得到目标结构:

  1. 导入numpy库
  2. 初始化指定形状的空对象数组
  3. 逐行将子列表转换为numpy定长字符串数组,赋值到外层数组对应位置
import numpy as np
my_list = [['Hamburg', 'Hanover', 'Leipzig'], ['Leipzig', 'Nuremberg']]
# 初始化形状为(2,)的空对象数组
correct_result = np.empty(shape=(2,), dtype=object)
# 逐行赋值独立的numpy子数组
correct_result[0] = np.array(my_list[0])
correct_result[1] = np.array(my_list[1])
输出验证

运行上述代码后,correct_result的实际输出为:

[array(['Hamburg', 'Hanover', 'Leipzig'], dtype='<U7')
array(['Leipzig', 'Nuremberg'], dtype='<U9')]

该结构和你给出的期望结构完全匹配,不存在原生Python列表的list(...)标识,每个内层元素都是独立的numpy字符串数组。

补充说明:常规规则二维numpy数组要求所有行长度完全一致,受限于两个子列表的长度差异,无法生成行长度不等的规则二维数组,上述嵌套对象数组结构是唯一能匹配你期望形态的实现方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.05 05:54:05