NumPy ndarray的行选择

NumPy ndarray的行选择

在NumPy中,ndarray是最重要的数据结构之一,它是一种多维数组类型,可以表示向量、矩阵和任意数量的维度数组。一般来说,我们需要对ndarray进行许多操作,其中一项重要的操作就是对其进行行选择和操作。在本篇文章中,我们将介绍NumPy中的行选择,并提供一些示例。

阅读更多:Numpy 教程

创建NumPy数组数组

在介绍如何选择NumPy数组的行之前,我们先创建一个包含随机数字的NumPy数组。我们可以使用NumPy的random库创建随机数。以下是使用numpy.random.rand()函数创建一个5 x 3形状的NumPy数组的示例代码。

import numpy as np
np.random.seed(0) #设置随机数种子,以使每次结果一致
arr = np.random.rand(5, 3) 
print(arr)
Python

运行该代码,输出结果如下:

[[0.5488135  0.71518937 0.60276338]
 [0.54488318 0.4236548  0.64589411]
 [0.43758721 0.891773   0.96366276]
 [0.38344152 0.79172504 0.52889492]
 [0.56804456 0.92559664 0.07103606]]
Python

如您所见,该代码输出了一个5 x 3的数组,每个元素都是具有0到1之间均匀分布的随机数字。

选择单个行

使用NumPy的数组索引操作可以简单地实现选择单个行的操作。以下示例演示了如何选择第三行。

import numpy as np
np.random.seed(0)
arr = np.random.rand(5, 3) 
print(arr[2])
Python

运行该代码,输出结果如下:

[0.43758721 0.891773   0.96366276]
Python

如您所见,该代码输出了第三行的所有元素。

选择连续的多行

要选择NumPy数组的多行,您可以使用NumPy中的切片操作。以下示例展示了如何选择数组的第二至第四行。

import numpy as np
np.random.seed(0)
arr = np.random.rand(5, 3) 
print(arr[1:4])
Python

运行该代码,输出结果如下:

[[0.54488318 0.4236548  0.64589411]
 [0.43758721 0.891773   0.96366276]
 [0.38344152 0.79172504 0.52889492]]
Python

如您所见,该代码输出了第二至第四行的所有元素。

根据条件选择行

一个经常需要用到的任务是基于某些条件从NumPy数组中提取行。在这种情况下,您可以使用NumPy的布尔索引。以下示例演示了如何选择数组中值大于0.5的行。

import numpy as np
np.random.seed(0)
arr = np.random.rand(5, 3) 
condition = arr > 0.5
print(condition)
print(arr[condition])
Python

运行该代码,输出结果如下:

[[ True  True  True]
 [ True False  True]
 [False  True  True]
 [False  True  True]
 [ True  True False]]
[0.5488135  0.71518937 0.60276338 0.54488318 0.64589411 0.891773
0.96366276 0.79172504 0.52889492 0.56804456 0.92559664]
Python

如您所见,这个示例使用条件“arr> 0.5”创建了一个名为condition的新数组,该新数组包含与原始数组具有相同数量的True / False值。将该条件应用于原始数组后,返回了超过0.5的所有元素的行。

另一个示例是根据数组中某一列的值来选择行。以下示例演示了如何选择第一列元素大于0.5的行。

import numpy as np
np.random.seed(0)
arr = np.random.rand(5, 3) 
print(arr[arr[:,0] > 0.5])
Python

运行该代码,输出结果如下:

[[0.5488135  0.71518937 0.60276338]
 [0.56804456 0.92559664 0.07103606]]
Python

如您所见,这个示例使用新的数组条件“arr [:,0]> 0.5”,对切片中第一列中的所有元素进行比较。返回了第一列元素大于0.5的所有行。

选择所有行和列

要选择所有的行和列,您可以使用冒号(:)作为索引。以下示例演示如何选择数组的所有行和列。

import numpy as np
np.random.seed(0)
arr = np.random.rand(5, 3) 
print(arr[:,:])
Python

运行该代码,输出结果如下:

[[0.5488135  0.71518937 0.60276338]
 [0.54488318 0.4236548  0.64589411]
 [0.43758721 0.891773   0.96366276]
 [0.38344152 0.79172504 0.52889492]
 [0.56804456 0.92559664 0.07103606]]
Python

如您所见,该示例返回了数组的所有行和列。

选择特定列

如果您只需要选择数组的特定列,您可以使用数组的第二个索引来指定要选择的列。以下示例演示如何选择数组的第一和第三列。

import numpy as np
np.random.seed(0)
arr = np.random.rand(5, 3) 
print(arr[:,[0,2]])
Python

运行该代码,输出结果如下:

[[0.5488135  0.60276338]
 [0.54488318 0.64589411]
 [0.43758721 0.96366276]
 [0.38344152 0.52889492]
 [0.56804456 0.07103606]]
Python

如您所见,该示例返回了数组的第一和第三列。

总结

NumPy的ndarray提供了多种选择、切片和索引操作,使得对数组的行和列进行选择变得非常容易。在本篇文章中,我们介绍了如何选择单个行、选择连续的多行、根据条件选择行、选择所有行和列和选择特定列,这些示例将帮助您更好地理解NumPy数组的选择操作。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册