我有两个1D数组。我需要用第二个数组(B)中的所有行扩展第一个数组(a),以创建一个新数组,该数组是一个合并两个数组的1D数组。
下面的例子更清楚:
a = np.array(['x', 'y'])
b = np.array(['a', 'b', 'c'])
# how to handle the above 1D-arrays to create the below array (c)?
c = np.array(['xa', 'xb', 'xc', 'ya', 'yb', 'yc'])
print(c)
新的数组c看起来像这样:
['xa' 'xb' 'xc' 'ya' 'yb' 'yc']
当然,我可以用循环来实现,但我在寻找更聪明的代码。谢谢
4条答案
按热度按时间wooyq4lh1#
对于两个列表,聪明的做法是使用列表解析:
对于数组,您可以使用
np.char.add
,如其他答案所示:Timeit在这样一个小例子上必须谨慎看待。通常情况下,对于小例子来说,for list更好,但扩展性不太好。但我预计
np.char.add
会损害数组的扩展性(np.char
函数只是将标准的字符串方法应用于数组元素。)在创建数组时指定
object
dtype,我们可以使用+
运算符,并获得一些速度:作为参考,添加两个数字数组:
第二种情况大10_000,但时间仅增加20倍。
kmb7vmvb2#
您可以使用numpy广播:
drkbr07n3#
使用numpy
meshgrid
方法,然后转置T
:结果
yxyvkwin4#
保持简单,使用两个循环结构