本文主要是介绍如何使用numpy进行矩阵的创建,以及从矩阵中读取数据,修改矩阵数据。
创建矩阵
import numpy as npa = np.array([1,2,3])
b = np.array([[1,2,3],[4,5,6]])
#print(a)
#print(b)# 创建全0数组 eros矩阵
c = np.zeros((8,8), np.uint8)
#print(c)# 创建全1数组 ones矩阵
d = np.ones((8,8), np.uint8)
#print(d)# 创建全值数组 full矩阵
e = np.full((8,8), 10, np.uint8)
#print(e)# 创建单元数组 identity
f = np.identity(4)
#print(f)# 创建单元数组
g = np.eye(5, 7, k=3)
print(g)
接口解释:
1. array
- np.array 是 numpy 库的一个接口,用于创建 numpy 数组。可以将 Python 列表或嵌套列表转换为 numpy 数组,提供了更高效的数组操作功能,支持向量化操作,例如数学运算、切片、索引等。
- np.array([1,2,3]) 创建了一个一维的 numpy 数组,包含元素 1、2 和 3。
- np.array([[1,2,3],[4,5,6]]) 创建了一个二维的 numpy 数组,是一个 2 行 3 列的矩阵。
2. zeros
- np.zeros 是 numpy 的接口,用于创建指定形状的全零数组。
- 这里创建了一个 8 行 8 列的数据类型为 np.uint8(无符号 8 位整数)的全零数组。可以用于初始化存储数据的数组,或者作为计算的初始状态。
3. ones
- np.ones 与 np.zeros 类似,不同之处在于它创建的是全 1 数组。
- 此函数创建了一个 8 行 8 列的数据类型为 np.uint8 的全 1 数组。
4. full
- np.full 是 numpy 的接口,用于创建一个指定形状的数组,并且数组中的元素全部为指定的值。
- 这里创建了一个 8 行 8 列的数据类型为 np.uint8 的数组,数组中的元素全部为 10。
5. identity
- np.identity 是 numpy 的接口,用于创建一个指定维度的单位矩阵。
- 这里创建了一个 4 行 4 列的单位矩阵,主对角线上元素为 1,其余元素为 0。
6. eye
- np.eye 是 numpy 的接口,用于创建一个二维数组,在对角线上的元素为 1,其余元素为 0。
- 它接受三个参数,第一个参数 5 表示行数,第二个参数 7 表示列数,k=3 表示主对角线的偏移量。在这个例子中,创建了一个 5 行 7 列的数组,从第 3 条对角线上开始元素为 1(即从左上角开始向右下偏移 3 个位置的对角线上元素为 1),其余元素为 0。
检索与赋值
import numpy as np
import cv2# 创建全0矩阵
img = np.zeros((480,640,3), np.uint8)# 从矩阵中读取某个元素的值
print(img[100,100])# 向矩阵中某个元素赋值
count = 0
while count < 400 :img[count,100] = 255count = count + 1cv2.imshow('img', img)
cv2.waitKey(0)
代码中 print(img[100,100]) 打印的是 BGR三个值,表示窗口坐标(100,100)像素点的值。
循环给矩阵赋值,将黑色改为白色,从坐标(0,100)开始,一直到(399,100),在窗口中表现为一条白色的线:
其它赋值方式:
img[100,100,0] = 255, 表示赋值为蓝色;
img[100,100,1] = 255,表示赋值为绿色。
img[100, 100] = [0, 0, 255], 表示赋值为红色。