• Register

simboli in seznami

+3 votes
389 views
Zanima me, kako bi učinkovito zamenjal sympy simbole v numpy arrayu ali pa navadnem seznamu. Primer:

x = symbols('x')

a = [x, 3, 4]

a.subs(x, 2) #subs ne dela na seznamih

Vem, da lahko element prepišem:

a[0] = 2

Ampak za moj problem to ni ok, ker simbol x ni na znanem mestu. Zato bi bila priročna podobna funkcija, kot je subs.
asked Dec 1, 2015 by Jan Tomec (400 points)

3 Answers

+2 votes
 
Best answer

V SymPy-u matriko zapiši z Matrix. Nato za pretvorbo v numpy uporabi lambdify, saj je to najbolj učinkovito (več v sympy dokumentaciji).  Prilagam kodo:

from sympy import *

x = symbols('x')

a = Matrix([x, 3, 4])

a_np = lambdify(x, a, modules='numpy')

a_np(1)

Rezultat:

matrix([[1],
        [3],
        [4]])
answered Dec 2, 2015 by blaz (41,550 points)
selected Dec 12, 2015 by blaz
+1 vote
Lahko narediš tako:

x = symbols('x')

a = [x, 3, 4]

for i, elem in enumerate(a):
    if elem == x:
        a[i] = 'nekaj'
answered Dec 1, 2015 by Blaž Velkavrh (29,970 points)
+1 vote
Opišite prosim zakaj to rabite. Nekako se ne zdi najbolj primerno.
answered Dec 3, 2015 by janko.slavic (81,340 points)
...