首页 > 编程笔记 > Python笔记 阅读:4

NumPy数组的增删改查(附带实例)

NumPy 中数组增、删、改、查的方法有很多,本节介绍几种常用的方法。

NumPy数组的增加

数组数据的增加可以按照水平方向增加也可以按照垂直方向增加。水平方向增加数据主要使用 hstack() 函数,垂直方向增加数据主要使用 vstack() 函数。

【实例】创建两个二维数组,实现数组数据的增加,程序代码如下:
import numpy as np  # 导入numpy模块

# 创建二维数组
n1 = np.array([[1, 2], [3, 4], [5, 6]])
n2 = np.array([[10, 20], [30, 40], [50, 60]])

print(np.hstack((n1, n2)))  # 水平方向增加数据
print(np.vstack((n1, n2)))  # 垂直方向增加数据
运行程序,输出结果如下:

[[ 1  2 10 20]
[ 3  4 30 40]
[ 5  6 50 60]]
[[ 1  2]
 [ 3  4]
 [ 5  6]
 [10 20]
 [30 40]
 [50 60]]

NumPy数组的删除

数组数据的删除主要使用 delete() 方法。

【实例 2】通过以下程序删除指定的数组数据,程序代码如下:
import numpy as np  # 导入numpy模块

n1 = np.array([[1, 2], [3, 4], [5, 6]])  # 创建二维数组
print(n1)

n2 = np.delete(n1, obj=2, axis=0)  # 删除第3行
n3 = np.delete(n1, obj=0, axis=1)  # 删除第1列
n4 = np.delete(n1, obj=(1, 2), axis=0)  # 删除第2行和第3行

print("删除第3行后的数组:\n", n2)
print("删除第1列后的数组:\n", n3)
print("删除第2行和第3行后的数组:\n", n4)
运行程序,结果为:
[[1 2]
 [3 4]
 [5 6]]
删除第3行后的数组:
[[1 2]
 [3 4]]
删除第1列后的数组:
[[2]
 [4]
 [6]]
删除第2行和第3行后的数组:
[[1 2]]
对于删除数组或数组元素的操作,还可以通过索引和切片方法只选取保留的数组或数组元素。

NumPy数组的修改

修改数组或数组元素时,直接为数组或数组元素赋值即可。

【实例 3】通过以下程序修改指定的数组元素,程序代码如下:
import numpy as np  # 导入numpy模块

n1 = np.array([[1, 2], [3, 4], [5, 6]])  # 创建二维数组
print(n1)

n1[1] = [30, 40]  # 修改数组第2行[3,4]为[30,40]
n1[2][1] = 88  # 修改第3行第2个元素6为88

print("修改后的数组:\n", n1)
运行程序,结果如下:
[[1 2]
 [3 4]
 [5 6]]
修改后的数组:
[[ 1  2]
 [30 40]
 [ 5 88]]

NumPy数组的查询

数组的查询同样可以使用索引和切片方法来获取指定范围的数组或数组元素,还可以通过 where() 函数查询符合条件的数组或数组元素。

where() 函数语法格式如下:
numpy.where(condition, x, y)
第一个参数为一个布尔数组,第二个参数和第三个参数可以是标量也可以是数组。若满足条件(参数 condition),则输出参数 x,否则输出参数 y。

【实例 4】下面实现数组查询,数组元素大于 5 则输出 2,不大于 5 则输出 0,程序代码如下:
import numpy as np  # 导入numpy模块

n1 = np.arange(10)  # 创建一个一维数组
print(n1)

print(np.where(n1 > 5, 2, 0))  # 大于5输出2,不大于5输出0
运行程序,结果如下:

[0 1 2 3 4 5 6 7 8 9]
[0 0 0 0 0 0 2 2 2 2]


如果不指定参数 x 和 y,则输出满足条件的数组元素的坐标。例如,上述示例不指定参数 x 和 y,主要代码如下:
n2 = n1[np.where(n1 > 5)]
print(n2)
运行程序,结果为:

[6789]

相关文章