如何用NumPy将ID数组与特征数组匹配用于神经网络输入
实现方法
针对你的需求,这里提供两种适配8000行大数据量场景的NumPy实现方式:
方法一:纯NumPy向量操作(推荐)
基于NumPy底层优化的维度扩展与轴拼接,处理大数组时效率最高:
import numpy as np # 模拟你的数据结构 Arr_1 = np.random.randint(100, 1000, size=(8000, 1)) # (8000,1)的user_id数组 Arr_2 = np.random.rand(8000, 1000) # (8000,1000)的分词文本数组 # 为两个数组各扩展一个维度,形状变为(8000,1,1)和(8000,1,1000) arr1_expanded = np.expand_dims(Arr_1, axis=1) arr2_expanded = np.expand_dims(Arr_2, axis=1) # 在轴1位置拼接,得到目标结构的数组 Arr_3 = np.concatenate([arr1_expanded, arr2_expanded], axis=1) # 验证形状:输出(8000, 2),每个元素包含对应的ID和文本特征 print(Arr_3.shape)
生成的Arr_3完全匹配你示例中的结构,可直接作为神经网络输入。
方法二:列表推导式(直观但效率稍低)
代码逻辑更直观,但处理8000行数据时速度略慢于纯NumPy操作:
import numpy as np Arr_1 = np.array([[100], [200], [300]]) Arr_2 = np.array([[1,2,3], [4,5,6], [7,8,9]]) Arr_3 = np.array([[row1, row2] for row1, row2 in zip(Arr_1, Arr_2)])
神经网络输入额外提示
如果模型需要同时输入user_id和文本特征,无需强制拼接成三维数组:多数深度学习框架(如TensorFlow/Keras)支持多输入分支,可直接将Arr_1和Arr_2作为两个独立输入层,后续通过Concatenate层合并特征,这种方式更灵活,还能避免维度转换的额外开销。
内容的提问来源于stack exchange,提问作者Giovanni Meoño
相关产品推荐
相关产品推荐

