Pythonのメモ帳

numpy, pandas, tensorflow を使いこなすための忘備録

2つの文字列配列の要素同士を連結する(文字列配列の足し算)

numpyでは配列(行列)の計算が簡単にできる。これは要素が数字の場合だけでなく、ありがたいことに文字列の場合にも使える。文字列の場合にできる計算は足し算(文字列の連結)だけで、使うこともあまりないけど地味にありがたい。

import numpy as np

array1 = np.array([['a', 'b', 'c'],['a', 'b', 'c']], dtype=object)
array2 = np.array([['1', '2', '3'],['1', '2', '3']], dtype=object)
print(array1 + array2)
出力: array([['a1', 'b2', 'c3'],
['a1', 'b2', 'c3']], dtype=object)

 

 

だだし、配列の型の設定をしないとエラーになるので注意。下のように引数の dtype=object を除くとエラーになる。

array1 = np.array([['a', 'b', 'c'],['a', 'b', 'c']])
array2 = np.array([['1', '2', '3'],['1', '2', '3']])
print(array1 + array2)

出力: TypeError: ufunc 'add' did not contain a loop with signature matching types dtype('<U1') dtype('<U1') dtype('<U1')

 

 

もちろん後から型を変換しても大丈夫。

array1 = np.array([['a', 'b', 'c'],['a', 'b', 'c']])
array2 = np.array([['1', '2', '3'],['1', '2', '3']])
print(array1.astype(object) + array2.astype(object))
出力: array([['a1', 'b2', 'c3'],
['a1', 'b2', 'c3']], dtype=object)