2016-09-16 96 views
0

我想這樣寫:無效使用語法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

回答

1

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

但你真正想做的是動態變量名稱,這是重複的。