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

如何在NumPy中对多特征二维数组与一维标签数组进行配对?

解决方法

首先要明确:你期望的输出结构中,每个元素包含一个长度为3的数组和一个标量,二者形状不一致,因此无法用常规的数值型NumPy数组存储,必须使用object类型的NumPy数组。

你的临时方案分析

np.array(list(zip(inputs, labels)))是可行的,但对于大规模数据,会先将所有元素转换为Python列表对象,存在额外的内存开销和转换成本。

更高效的NumPy原生实现

可以直接初始化一个object类型的数组,再分别赋值输入行和标签,避免中间列表的创建:

import numpy as np

inputs = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
labels = np.array([0, 1, 0])

# 创建形状为(n_samples, 2)的object类型空数组
result = np.empty((inputs.shape[0], 2), dtype=object)
# 将输入数组的每一行赋值给第一列
result[:, 0] = inputs
# 将标签赋值给第二列
result[:, 1] = labels

print(result)

输出结果:

[[array([1, 2, 3]) 0]
 [array([4, 5, 6]) 1]
 [array([7, 8, 9]) 0]]

如果希望第一列是Python列表而非NumPy数组,只需将赋值语句改为result[:, 0] = inputs.tolist()即可,输出会变成:

[[[1, 2, 3] 0]
 [[4, 5, 6] 1]
 [[7, 8, 9] 0]]

效率对比

对于数据量较大的场景,直接初始化object数组并赋值的方式比zip+list的方法更高效:

  • 避免了创建中间Python列表的内存开销
  • 直接操作NumPy数组的内存,减少了Python对象和NumPy数组之间的转换成本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:57:13