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)
![](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAEALAAAAAABAAEAQAICTAEAOw==)