无效使用语法np.zeros
问题描述:
我想这样写:无效使用语法np.zeros
x = 'something_{}'.format(1)
exec('{} = {}'.format(x,np.zeros((2,2))))
问题:我得到SyntaxError: invalid syntax
,我不知道如何解决它。
有人有想法吗?
答
numpy数组的字符串表示形式不是有效的Python文字,因此它不能是eval
ed。
z = np.zeros((2,2))
str(z) # [[ 0. 0.]\n [ 0. 0.]] <-- invalid literal
技术上你想可以通过使用对象的再版达到什么样的(但一般情况下,它也将无法正常工作,例如,当矩阵的规模是巨大的):
import numpy as np
x = 'something_{}'.format(1)
exec('{} = np.{!r}'.format(x, np.zeros((2,2))))
但你真正想做的是动态变量名称,这是重复的。
np.zeros((2,2))返回一个数组,你不能在这样的格式调用中使用它。 – elethan
运行'“{} = {}”。format(x,np.zeros((2,2)))'首先看看它的值是什么。你会看到有一个嵌入的'\ n',所以你会得到一个错误传递给'exec()'。 – MattDMo