subsメソッドでは駄目みたいで、sympy.lambdifyという関数を使う必要があるっぽい。
subs_vs_lambdify.py
# coding:utf-8
import numpy as np
import sympy as sp
# sympy の変数を作る
x = sp.Symbol('x')
y = sp.Symbol('y')
# numpy の配列を作る
arrX = np.arange(12, dtype='float64').reshape((3, 4))
arrY = np.ones((3, 4))
# sympy の関数を作る
symbolFunc = 2*x + y
# subs メソッドで配列を代入
resSubs = symbolFunc.subs([(x, arrX), (y, arrY)])
print(resSubs)
# ==> 2*x + y
# 配列は計算できないっぽい
# lambdify を使って計算してみる
# まずは関数を作る
lambdifyFunc = sp.lambdify([x, y], symbolFunc)
# 作った関数の引数に配列を渡す
resLambdify = lambdifyFunc(arrX, arrY)
print(resLambdify)
# ==> [[ 1. 3. 5. 7.]
# [ 9. 11. 13. 15.]
# [17. 19. 21. 23.]]
# こっちは計算してくれた