![](/img/trans.png)
[英]Python string format ignored when ANSI escape sequence characters are in the string
[英]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.