Numpy切片——用列表指定所需行

Numpy切片——用列表指定所需行

在本文中,我们将介绍如何使用Python的Numpy库中的切片方法,通过指定想要的行来切片一个数组。

阅读更多:Numpy 教程

什么是Numpy切片

在Numpy中,切片是指根据一组选定的行与列来获取数组的子集。和Python中的切片一样,Numpy切片也采用[start:stop:step]的形式。

针对Numpy的2D数组,我们可以使用“,”来区分行和列。比如:

import numpy as np

a = np.array([[ 1, 2, 3], 
              [ 4, 5, 6], 
              [ 7, 8, 9]])
print("原始数组:")
print(a)

print("切片后的子集:")
print(a[:2, 1:])

上述代码中,我们首先定义了一个3×3的数组a,然后使用a[:2, 1:]切片出数组的第1、2行和第2、3列,输出结果为:

原始数组:
[[1 2 3]
 [4 5 6]
 [7 8 9]]
切片后的子集:
[[2 3]
 [5 6]]

Numpy切片中用列表指定所需行

现在,我们来看看如何使用列表来指定我们需要的行。

首先,我们需要定义一个列表,包含我们希望选取的行的索引。比如,如果我们需要选取数组的第1、3行,则定义的列表形如indexes = [0, 2]。

我们可以使用np.take()函数,将定义好的列表传递给need_rows这个参数:

import numpy as np

a = np.array([[ 1, 2, 3], 
              [ 4, 5, 6], 
              [ 7, 8, 9]])

indexes = [0, 2]
print("切片前的数组:")
print(a)

print("切片后的子集:")
print(np.take(a, indexes, axis=0))

上述代码中,我们定义了一个3×3的数组a,然后定义了一个包含需要选取的行索引的列表indexes。我们使用np.take()函数将a中的indexes指定的行切片出来,最终输出结果为:

切片前的数组:
[[1 2 3]
 [4 5 6]
 [7 8 9]]
切片后的子集:
[[1 2 3]
 [7 8 9]]

这样,在一个大的数组中,我们只需指定需要选取的行的索引,就可以将其切片出来。

Numpy切片中排除部分行

除了上述方法,我们还可以使用np.delete()函数,从原数组中去除我们不需要的行。

import numpy as np

a = np.array([[ 1, 2, 3], 
              [ 4, 5, 6], 
              [ 7, 8, 9]])

excluded_rows = [1]
print("切片前的数组:")
print(a)

print("切片后的子集:")
print(np.delete(a, excluded_rows, axis=0))

在上述代码中,我们定义了一个3×3的数组a,然后定义了一个包含需要去除的行索引的列表excluded_rows。我们使用np.delete()函数将a中的excluded_rows指定的行排除,最终输出结果为:

切片前的数组:
[[1 2 3]
 [4 5 6]
 [7 8 9]]
切片后的子集:
[[1 2 3]
 [7 8 9]]

总结

Numpy的切片方法无疑极大地提升了程序的可读性和效率。在处理大规模的数据数组时,只需使用非常简单的代码,就可以快速地选取需要的行和列,或将不需要的行和列排除,提高计算效率。除了本文中介绍的方法,Numpy还有许多其他的高效处理数据的方法,读者可进一步探索。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程