📜  如何从给定的 NumPy 数组中删除 NaN 值?

📅  最后修改于: 2022-05-13 01:54:33.725000             🧑  作者: Mango

如何从给定的 NumPy 数组中删除 NaN 值?

在本文中,我们将学习如何从给定数组中删除 Nan 值。 man 值是那些没有与之关联的特定值的值,或者它们与要在声明的数组中使用的值的类型不同。

基本上有两种方法以相同的方式工作,只是语法略有不同。我们可以使用 NumPy 中指定的函数,也可以使用运算符,基本工作是相同的。

方法 #1:使用 numpy.logical_not() 和 numpy.nan() 函数

numpy.isnan() 将为值为 nan 的所有索引提供真正的索引,并且当与 numpy.logical_not()函数结合使用时,布尔值将被反转。所以,最后,我们得到了所有非 nan 元素的索引。从索引中,我们可以过滤掉不是 nan 的值,并将其保存在另一个数组中。

Python3
import numpy
  
  
# create a 1D array
a = numpy.array([5, 2, 8, 9, 3, numpy.nan,
                 2, 6, 1, numpy.nan])
  
# remove nan values using numpy.isnan()
# and numpy.logical_not
b = a[numpy.logical_not(numpy.isnan(a))]
  
# print the results
print("original 1D array                    ->", a)
print("1D array after removing nan values   ->", b)
print()
  
# create a 2D array
c = numpy.array([[6, 2, numpy.nan], [2, 6, 1],
                 [numpy.nan, 1, numpy.nan]])
  
# remove nan values using numpy.isnan()
# and numpy.logical_not
d = c[numpy.logical_not(numpy.isnan(c))]
  
# print the results
print("Original 2D array   ->")
print(c)
print("2D array converted to 1D after removing nan values   ", d)


Python3
import numpy
  
  
# create a 2D array
c = numpy.array([[12, 5, numpy.nan, 7], 
                 [2, 61, 1, numpy.nan],
                 [numpy.nan, 1,
                  numpy.nan, 5]])
  
# remove nan values using numpy.isnan() 
# and numpy.logical_not
d = c[~(numpy.isnan(c))]
  
# print the results
print("Original 2D array   ")
print(c)
print()
  
print("2D array converted to 1D after removing nan values   ")
print(d)


输出:

在 numpy python 中删除 nan

注意:无论数组的Dimension是什么,都会被展平成一维数组

方法#2:将 ~运算符而不是 numpy.logical_not() 与 numpy.isnan()函数结合起来。这将与上面的工作方式相同,它将任何维度数组转换为一维数组。

例如,在下面的代码中,仅显示了 2D 数组。

Python3

import numpy
  
  
# create a 2D array
c = numpy.array([[12, 5, numpy.nan, 7], 
                 [2, 61, 1, numpy.nan],
                 [numpy.nan, 1,
                  numpy.nan, 5]])
  
# remove nan values using numpy.isnan() 
# and numpy.logical_not
d = c[~(numpy.isnan(c))]
  
# print the results
print("Original 2D array   ")
print(c)
print()
  
print("2D array converted to 1D after removing nan values   ")
print(d)

输出:

在 numpy python 中删除 nan