2012-11-09 58 views
3

我在Python上有一個數組A,它有一些由numpy.nan創建的nan值。我想使用A[A==numpy.nan] = 0將所有nan值設置爲零。它根本不會改變陣列。這是爲什麼?將數組的值從nan更改爲0

回答

10

你想np.isnan

A[np.isnan(A)] = 0 

與您的代碼的問題是,(根據IEEE),nan不等於什麼 - 甚至本身。

作爲邊注,還有也

  • np.isinf - >(+/-無窮大)
  • np.isfinite - >(未無窮大或NaN)
  • np.isposinf - >(+無窮)
  • np.isneginf - >( - infinity)
+1

不應'np.isfinite'說「* not * infinity or NaN」? – Eric

+0

@Eric - 當然可以。 – mgilson

+1

謝謝。是的,這是我想要的 –

0

您可以使用numpy函數來更改所有的nan矩陣x處的值爲零。

numpy.nan_to_num(x)