繁体   English   中英

将字符串用作numpy.mat()的输入时,某些字符将被忽略

[英]When a string is used as an input into numpy.mat(), certain characters are ignored

来自MATLAB的scipy / numpy,我将numpy.array的输入语法视为过多的括号,例如

import numpy as np
import math
np.array([[1, 2], [math.sqrt(3), 4]])

因此,以下类似MATLAB的语法吸引了我:

np.array(np.mat("1, 2; math.sqrt(3), 4"))

但是,此特定示例显然导致了数组

array([[ 1. ,  2. ],
       [ 0.3,  4. ]])

似乎numpy.mat()忽略了其输入字符串中的某些字符:在这种情况下为“ math”和“ sqrt”。 此外,似乎不可能在输入字符串中使用变量。 这是为什么? 有没有一种方法可以使用像MATLAB这样的,无障碍节俭的输入方法,而这种输入方法不会“中断”呢?

您可以使用eval()sys._getframe()编写函数,下面是一个示例:

import numpy as np

def m(s):
    import sys
    frame = sys._getframe(1)
    return np.array([eval(item.strip(), frame.f_globals, frame.f_locals) 
                         for item in s.split(";")])

def f():
    a = 1
    x = 3.14
    print m("1,2,3;np.sin(a),np.sqrt(2),x")

f()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM