Как изменить символы для сабов в np.array?

1

Я пытаюсь использовать символы 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 Traceback (последний вызов был последним) в() → 1 SOLVE = RSMy.subs({xhat1: 6, xhat2: 15 + alpha})

AttributeError: у объекта 'numpy.ndarray' нет атрибута 'subs'

Теги:
numpy
sympy

1 ответ

0

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), это может быть критично в некоторых случаях.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню