【问题标题】:How to change symbols to sympy subs in the np.array?如何将符号更改为 np.array 中的 sympy subs?
【发布时间】:2019-09-04 13:13:12
【问题描述】:

我尝试使用 np.array 矩阵中的 sympy 符号。 但是,它不起作用。如何修理我的电源线?

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'

【问题讨论】:

    标签: python numpy sympy


    【解决方案1】:

    您使用的RSMynumpy 数组并且没有subs 方法。您应该为该数组中的每个元素应用subs 方法。你可以这样做:

    SOLVE = np.vectorize(lambda x: x.subs({xhat1:6, xhat2:15+alpha}))(RSMy)

    还请注意,您使用的是alpha=np.sqrt([2]),它返回一个数组,而不是一个数字。我建议你使用alpha=np.sqrt(2),在某些情况下它可能很重要。

    【讨论】:

      猜你喜欢
      • 2020-07-14
      • 2015-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-01
      • 2012-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多