我试图将相同的值分配给许多变量。在这种情况下,值是nan。我的代码如下:
Pmpp_inIV=np.nan
ff=np.nan
Voc_inIV=np.nan
Voc_error=np.nan
i_at_voc=np.nan
Isc_inIV=np.nan
Isc_error=np.nan
v_at_Isc=np.nan
print(type(Pmpp_inIV))
print(Pmpp_inIV,ff,Voc_inIV,Voc_error,i_at_voc,Isc_inIV,Isc_error,v_at_Isc)
输出为:
<class 'float'>
nan nan nan nan nan nan nan nan
我想知道比这更好的方法。我的意思是,与其多次键入许多np.nan
作为变量,还不如有一种更好的方法来仅将其写入一次?
答案 0 :(得分:1)
我认为您需要dictionary
:
vals = ['Pmpp_inIV','ff','Voc_inIV','Voc_error','i_at_voc','Isc_inIV','Isc_error','v_at_Isc']
d = dict.fromkeys(vals, np.nan)
print (d)
{'Pmpp_inIV': nan, 'ff': nan, 'Voc_inIV': nan, 'Voc_error': nan,
'i_at_voc': nan, 'Isc_inIV': nan, 'Isc_error': nan, 'v_at_Isc': nan}
并通过键选择值:
print (d['Pmpp_inIV'])
nan
但是如果需要使用DataFrame
中指定的列创建vals
:
df = pd.DataFrame(10, columns=vals, index=np.arange(10))
print (df)
Pmpp_inIV ff Voc_inIV Voc_error i_at_voc Isc_inIV Isc_error v_at_Isc
0 10 10 10 10 10 10 10 10
1 10 10 10 10 10 10 10 10
2 10 10 10 10 10 10 10 10
3 10 10 10 10 10 10 10 10
4 10 10 10 10 10 10 10 10
5 10 10 10 10 10 10 10 10
6 10 10 10 10 10 10 10 10
7 10 10 10 10 10 10 10 10
8 10 10 10 10 10 10 10 10
9 10 10 10 10 10 10 10 10
答案 1 :(得分:0)
老实说,听起来很奇怪,必须为NaN设置一堆变量,大概只是稍后进行突变。我敢打赌,有一种更好的方法来完成您要完成的任务。
也就是说,您也可以使用repeat
中的itertools
from itertools import repeat
Pmpp_inIV, ff, Voc_inIV, Voc_error, \
i_at_voc, Isc_inIV, Isc_error, v_at_Isc \
= repeat(np.nan, 8)
或者您可以使用locals()
for k in ['Pmpp_inIV', 'ff', 'Voc_inIV', 'Voc_error',
'i_at_voc', 'Isc_inIV', 'Isc_error', 'v_at_Isc']:
locals()[k] = np.nan
这两种解决方案都不适合维护,因此我建议完全考虑使用另一种方法。