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

如何用高效方法将两个NumPy一维数组生成组合字符串数组?

高效实现NumPy一维数组元素两两拼接

针对你提出的需求,这里提供两种无需循环的向量化高效方案,比循环实现性能更优,尤其适合大规模数组场景:

方案一:利用广播机制

通过扩展数组维度触发NumPy的广播特性,直接完成元素级拼接,再展平为一维数组:

import numpy as np

a = np.array(['x', 'y'])
b = np.array(['a', 'b', 'c'])

# 扩展a为二维列向量,与b广播拼接后展平
c = (a[:, None] + b).ravel()
print(c)

输出结果:

['xa' 'xb' 'xc' 'ya' 'yb' 'yc']

原理:a[:, None]将原形状为(2,)的数组转换为(2,1)的二维数组,与形状为(3,)的b进行加法操作时,NumPy会自动广播为(2,3)的二维数组,每个位置完成字符串拼接,最后用ravel()将二维数组展平为一维。

方案二:使用np.meshgrid生成网格

通过meshgrid生成对应元素的网格矩阵,拼接后展平:

import numpy as np

a = np.array(['x', 'y'])
b = np.array(['a', 'b', 'c'])

# 生成对应网格,拼接后展平
a_grid, b_grid = np.meshgrid(a, b, indexing='ij')
c = (a_grid + b_grid).ravel()
print(c)

输出结果与方案一一致。
原理:indexing='ij'参数确保生成的网格按行优先排列(对应a的每个元素匹配b的所有元素),两个网格矩阵对应位置的元素拼接后,展平得到目标数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 16:25:02