,當你做這樣的事情今後發生警告:爲什麼「無在numpy.asarray(......)」引起警示未來
>>> numpy.asarray([1,2,3,None]) == None
目前返回False
,但我知道將返回在未來版本的Numpy中包含[False,False,False,True]
的數組。
正如討論的on the numpy discussion list解決方法是測試a is None
。
什麼讓我困惑的是in
關鍵字與一維數組的這種行爲相比列表:
>>> None in [1,2,3,None]
True
>>> None in numpy.asarray([1,2,3,None])
__main__:1: FutureWarning: comparison to 'None' will result in an elementwise
object comparison in the future
False
>>> 1 in numpy.asarray([1,2,3,None])
True
EDIT(見註釋) - 實際上有兩個不同的問題:
- 爲什麼這是否會導致
FutureWarning
- 將None in numpy.asarray(...)
的未來行爲與現在的行爲進行比較? - 爲什麼從
list
的in
行爲的差異;我可以測試我的數組是否包含None
而不將其轉換爲列表或使用for
循環?
numpy的版本是1.9.1,3.4.1的Python
爲什麼你的數組包含'None'?用'None'查看一個例子的'dtype'。那是你要的嗎?你有沒有把'None'與'np.nan'混淆? – hpaulj
我正在使用可能包含「無」的數據。我知道'None'不是'np.nan'。我的確切情況比我的例子更復雜,但這與問題無關。 看着'dtype'確實可以工作。謝謝。 順便提一下,np.asarray([1,2,3,np.nan])中的np.nan也會返回False。所以也許我的問題應該是關於''in'和numpy數組。 – szmoore
儘管如果你從一個有'None'的矩陣中取一個slice,即使這個slice沒有'None','dtype'仍然是'object'。 – szmoore