如何根据条件过滤二维NumPy数组

如何根据条件过滤二维NumPy数组

在这篇文章中,我们将看到如何在NumPy二维数组中根据给定的条件应用过滤器。我们必须从现有数组或新数组中获得所需元素的输出,即我们想要过滤的元素。

**这里我们要在numpy中创建一个二维数组。

import numpy as np
 
 
# 2-D Array also called as arrays
# with rank 2
np_2d_arr = np.array([[1, 2, 3], [4, 5, 6]])
 
# View the 2-D Array A2
print(np_2d_arr)

输出:

[[1 2 3]
 [4 5 6]]

现在让我们看看在NumPy二维数组中通过给定条件应用过滤器的一些例子。

例子1:使用np.asarray()方法

在这个例子中,我们使用的是np.asarray()方法,其解释如下。

语法 : numpy.asarray(arr, dtype=None, order=None)

参数 :

  • arr : [array_like] 输入数据,以任何可以转换为数组的形式。这包括列表、图元的列表、图元、图元的图元、列表的图元和 ndarrays。
  • dtype : [数据类型,可选] 默认情况下,数据类型是由输入数据推断出来的。
  • order :是否使用行为主(C-style)或列为主(Fortran-style)的内存表示。默认为 “C”。

返回值: [ndarray] arr的阵列解释。如果输入已经是ndarray的dtype和顺序匹配,则不进行复制。如果arr是ndarray的子类,将返回基类ndarray。

在这里,我们首先创建了一个numpy数组和一个带有要过滤的值的过滤器。为了过滤,我们在numpy.in1d()方法中使用了这个fltr,并将其值存储在原始数组中,如果条件满足则返回真。

import numpy as np
 
 
arr = np.asarray([[1, 'one'], [2, 'two'], [3, 'three'],
                  [4, 'four'], [5, 'five']])
 
fltr = np.asarray(['two', 'four'])
arr[np.in1d(arr[:, 1], fltr)]

输出:

array([['2', 'two'],
       ['4', 'four']], dtype='<U21')

示例2:使用numpy.all()方法

在这个例子中,我们使用的是np.all()方法,其解释如下。

numpy.all()函数测试沿所述轴的所有数组元素是否评估为真。

语法: numpy.all(array, axis = None, out = None, keepdims = class numpy._globals._NoValue at 0x40ba726c)

参数 :

Array : [array_like]输入数组或对象的元素,我们需要测试。
axis : [int or tuple of ints, optional]数组元素被评估的轴。
out : [ndarray, optional]输出数组,其尺寸与输入数组相同,与结果一起放置。
keepdims : [boolean, optional]如果这个选项被设置为True。

返回 : 一个新的布尔数组,如’out’参数所示。

在这里,我们首先通过使用np.arrange()和reshape()方法创建一个numpy数组。为了过滤,我们在要过滤的索引处使用了条件。如果所有的值都满足条件,np.all()方法返回True。这个返回值与原始数组映射,得到过滤后的值。

import numpy as np
 
 
a = np.arange(12).reshape((3, 4))
print(a[:, np.all(a < 10, axis = 0)])

输出:

[[0 1]
 [4 5]
 [8 9]]

示例3:使用numpy.any()方法

在这个例子中,我们使用的是np.any()方法,其解释如下。

numpy.any()函数测试沿所述轴的任何数组元素是否评估为真
语法 :numpy.any(a, axis = None, out = None, keepdims = class numpy._globals._NoValue at 0x40ba726c)

参数 :

array : [array_like]输入数组或对象的元素,我们需要测试。
axis : [int or tuple of ints, optional]数组元素被评估的轴。
out : [ndarray, optional]输出数组,其尺寸与输入数组相同,放置结果。
keepdmis : [boolean, optional]如果该选项被设置为True。

返回 : 一个新的布尔数组,如’out’参数所示。

在这里,我们首先通过使用np.arrange()和reshape()方法创建一个numpy数组。为了过滤,我们在要过滤的索引处使用了条件。np.any()方法在任何数值满足条件的情况下返回真。这个返回值与原始数组映射,得到过滤后的值。

import numpy as np
 
 
a = np.arange(12).reshape((3, 4))
print(a[:, np.any(a < 2, axis = 0)])

输出:

[[0 1]
 [4 5]
 [8 9]]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Numpy 数组操作