如何将两个一维numpy字符串数组合并为二维数组?
解决方案
这里提供三种针对你的需求的可行实现方式:
- 方法1:使用
np.column_stack()
这个函数专门用于将多个一维数组按列组合成二维数组,对字符串数组完全适配:
import numpy as np titles = np.array(['title1', 'title2', 'title3']) IDs = np.array(['1543', '1231', '1551']) newOutput = np.column_stack((titles, IDs)).tolist() # 最终输出:[['title1', '1543'], ['title2', '1231'], ['title3', '1551']]
- 方法2:使用Python内置
zip()函数
直接将两个numpy数组按位置配对,再转换为列表,简单直观:
import numpy as np titles = np.array(['title1', 'title2', 'title3']) IDs = np.array(['1543', '1231', '1551']) # 若接受元组嵌套结构,直接转换 newOutput = list(zip(titles, IDs)) # 若需要严格的列表嵌套列表,可额外转换一层 newOutput = [list(item) for item in zip(titles, IDs)]
- 方法3:使用
np.stack()指定axis参数
通过axis=1参数,将两个数组按列堆叠成二维数组:
import numpy as np titles = np.array(['title1', 'title2', 'title3']) IDs = np.array(['1543', '1231', '1551']) newOutput = np.stack((titles, IDs), axis=1).tolist()
补充说明:你之前尝试的np.char.join()会把对应位置的字符串拼接成单个字符串(比如生成title11543这类结果),不符合二维数组的需求;np.concatenate()默认按轴0拼接,会生成更长的一维数组,并非二维结构,且它本身也支持字符串数组,但用法不匹配你的场景。
内容的提问来源于stack exchange,提问作者Jason Li
相关产品推荐
相关产品推荐

