无效使用语法np.zeros

问题描述:

我想这样写:无效使用语法np.zeros

x = 'something_{}'.format(1) 
exec('{} = {}'.format(x,np.zeros((2,2)))) 

问题:我得到SyntaxError: invalid syntax,我不知道如何解决它。

有人有想法吗?

+0

np.zeros((2,2))返回一个数组,你不能在这样的格式调用中使用它。 – elethan

+0

运行'“{} = {}”。format(x,np.zeros((2,2)))'首先看看它的值是什么。你会看到有一个嵌入的'\ n',所以你会得到一个错误传递给'exec()'。 – MattDMo

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)))) 

但你真正想做的是动态变量名称,这是重复的。