Python列表与Numpy数组合并问题:如何按位置配对生成目标二维数组
问题原因
你使用np.c_时多套了一层列表,导致输入是两个二维行向量,拼接后会得到形状为(2, 5)的数组,不符合预期。之前用np.append报错是因为没有指定拼接轴axis,且输入维度不匹配。
可行实现方案
方案1:修正np.c_用法(最简洁)
import numpy as np a1 = [1,2,3,4,5] a2 = [6,7,8,9,10] sc = np.c_[a1, a2] print(sc) # 输出: # [[ 1 6] # [ 2 7] # [ 3 8] # [ 4 9] # [ 5 10]] print(sc[0]) # 输出:[1 6]
方案2:使用np.column_stack(语义更清晰)
专门用于按列堆叠序列,输入普通列表即可,不用额外调整维度:
sc = np.column_stack((a1, a2))
方案3:纯Python实现(无需依赖numpy)
如果不需要numpy数组格式,直接用内置zip函数配对即可:
# 得到元素为元组的列表 sc = list(zip(a1, a2)) # 如果需要元素为列表的格式 sc = [list(pair) for pair in zip(a1, a2)]
方案4:修正np.append的用法(不推荐,循环追加效率低)
如果要坚持用逐行追加的写法,需要指定axis=0,且每次追加的内容维度和原数组匹配:
sc = np.empty((0, 2), dtype=int) for i in range(len(a1)): sc = np.append(sc, [[a1[i], a2[i]]], axis=0)
内容的提问来源于stack exchange,提问作者Ajinaz Shan
相关产品推荐
相关产品推荐

