2010-11-10 56 views
1
benfordd = dict() 
for attr in attrs: 
     benfordd.setdefault(attr, []).extend([val*1e6 for val in x if not np.isnan(val)]) 

以上只是我的部分代碼,爲什麼當我在IPython中運行它,我得到這個:幫助這個typerror在字典

類型錯誤:不支持這些類型的功能,並且不能安全地強制支持類型。

沒有人知道需要什麼值嗎? attr是字符串。

p.s.「val」代表什麼?

+1

「val」是價值的簡稱。如果你想知道它在這種情況下意味着什麼,請閱讀關於列表解析:http://docs.python.org/tutorial/datastructures.html#list-comprehensions – nmichaels 2010-11-10 21:33:23

回答

1

我相信在使用Sage和numpy時會發生此錯誤。原因是Sage會準備你的輸入,例如0.6**2被翻譯爲RealNumber('0.6') ** Integer(2)。這允許它以任意精度處理實數。不幸的是,numpy無法處理這些,因爲它不知道RealNumber是什麼。

如果您定義RealNumber = float,代碼應該可以工作;見the docs

+0

它不起作用,但感謝您指出我方向,我會研究它。讓我知道你是否有其他想法!謝謝。 – user365930 2010-11-10 21:53:53