求助:使用NumPy拼接两个列表生成指定np.array失败
解决NumPy拼接列表得到指定二维数组的问题
嘿,我完全懂你想要实现的效果——把两个列表拼接成目标格式的二维NumPy数组对吧?之前踩过维度不匹配的坑太正常了,我给你两种简单靠谱的方法,保证能搞定~
首先先明确我们的输入假设(如果你的原始列表不一样,只需要稍作调整就行):
我们有一个二维列表,每一行需要额外拼接一个元素,比如:
import numpy as np # 原始的二维列表 original_list = [[0, 1, 2, 3], [4, 5, 6, 7]] # 要拼接的元素列表(每个元素对应一行) append_list = [8, 9]
方法一:用np.hstack()水平拼接
hstack专门用于水平方向拼接数组,但要注意拼接的数组维度必须匹配。所以我们需要把append_list转成二维的列向量,再和原始数组拼接:
# 转成NumPy数组 original_arr = np.array(original_list) # 把一维的append_list转成2行1列的二维数组 append_arr = np.array(append_list).reshape(-1, 1) # 水平拼接 result = np.hstack((original_arr, append_arr))
运行后你会得到完全符合预期的结果:
array([[0, 1, 2, 3, 8], [4, 5, 6, 7, 9]])
方法二:用np.concatenate()指定轴拼接
concatenate是更通用的拼接函数,通过axis=1指定水平方向拼接,原理和上面一样:
result = np.concatenate((original_arr, append_arr.reshape(-1,1)), axis=1)
为什么之前会出错?
大概率是因为你直接用一维数组和二维数组拼接,NumPy会因为维度不兼容抛出错误。reshape(-1,1)的作用是自动根据元素数量计算行数(这里是2行),把一维数组转换成和原始数组行数一致的二维列向量,这样就能顺利拼接了。
最后验证下结果类型:
print(type(result)) # 输出 <class 'numpy.ndarray'>
内容的提问来源于stack exchange,提问作者John Difool
相关产品推荐
相关产品推荐

