#python #numpy #sympy
#python #numpy #sympy
Вопрос:
Я пытаюсь использовать символы sympy, которые находятся в матрице np.array. но это не работает. Как исправить мой шнур?
import numpy as np
from sympy import symbols, solve
dna_list = np.random.rand(10,2)
data_list = np.random.rand(10,3)
alpha=np.sqrt([2])
x1 = dna_list[:,0]
x2 = dna_list[:,1]
m = data_list[:,1]
b = data_list[:,2]
RSMX= np.array([[6, 15*alpha, 1], [-2, 15, 1], [10, 15, 1], [-alpha*1, 10, 1], [6, 10, 1], [10*alpha, 10, 1], [-2, -5, 1], [10, -5, 1], [6, -alpha*5, 1]])
print(RSMX)
xhat1, xhat2 = symbols('xhat1, xhat2')
RSMy = (m)/(1-xhat1) (m)/(1-xhat2) (b)
print(RSMy)
SOLVE = RSMy.subs({xhat1:6, xhat2:15 alpha})
Трассировка AttributeError (последний последний вызов
) в ()
—-> 1 РЕШИТЕ = RSMy.subs({xhat1:6, xhat2:15 альфа})Ошибка атрибута: объект ‘numpy.ndarray’ не имеет атрибута ‘subs’
Ответ №1:
RSMy
вы используете numpy
массив и не имеете subs
метода. Вы должны применить subs
метод для каждого элемента внутри этого массива. Вы можете сделать это таким образом:
SOLVE = np.vectorize(lambda x: x.subs({xhat1:6, xhat2:15 alpha}))(RSMy)
Также обратите внимание, что вы используете alpha=np.sqrt([2])
, который возвращает вам массив, а не число. Я рекомендую вам использовать alpha=np.sqrt(2)
, в некоторых случаях это может быть критично.