Numpy与图片操作
本文章只是记录了Numpy的一些简单常用操作,以及初级的与图片结合的Numpy操作。仅以此来记录我的学习工作。
一、Numpy操作
- 创建列表
创建一个一维列表
# 创建一个列表
list_a = [1,2,3,4,5]
# 输出列表
print(list_a)
# 查看属性
print(type(list_a))
输出:
[1, 2, 3, 4, 5]
<class 'list'>
创建一个二维列表
list_b = [[1,2],[3,4],[5,6]]
print(list_b)
# 通过索引取值
print(list_b[1][0])
输出:
[[1, 2], [3, 4], [5, 6]]
3
- 创建Numpy列表
list_c = [1,2,3,4]
print(type(list_c))
my_array = np.array(list_c)
print(type(my_array))
print(my_array)
输出:
<class 'list'>
<class 'numpy.ndarray'>
[1 2 3 4]
创建连续数组
arry = np.arange(0,10)
print(arry)
# 创建0-10的连续偶数的数组
arry_2 = np.arange(0,10,2)
print(arry_2)
# 创建全为1的3行3列的数组
arry_3 = np.ones(shape=(3,3))
print(arry_3)
# 创建全0数组
arry_4 =np.zeros(shape=(5,5))
print(arry_4)
# 创建随机数数组
arr = np.random.randint(0,100,10)
print(arry)
# 获取数组最大值
print(arr.max())
# 获取数组最小值
print(arr.min())
# 获取数组最大值索引
print(arr.argmax())
# 获取数组最小值索引
print(arr.argmin())
# 获取数组平均值
print(arr.mean())
# 获取数组形状
print(arr.shape)
# 转换数组形状
print(arr.reshape((5,2)))
输出:
[0 1 2 3 4 5 6 7 8 9]
[0 2 4 6 8]
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
[[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]
[0 1 2 3 4 5 6 7 8 9]
97
2
0
3
46.3
(10,)
[[97 52]
[ 8 2]
[63 9]
[77 77]
[53 25]]
创建一个10*10矩阵
matrix = np.arange(0,100).reshape(10,10)
print(matrix)
# 通过索引获取矩阵数值
print(matrix[2,4])
print(matrix[8,6])
# 切片,获取第三行
print(matrix[2,:])
# 切片,获取第四行
print(matrix[:,5])
print(matrix[:,5].reshape((10,1)))
# 获取矩阵局部区域,获取一到三行,二到四列区域
print(matrix[0:3,1:4])
输出:
[[ 0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]
[20 21 22 23 24 25 26 27 28 29]
[30 31 32 33 34 35 36 37 38 39]
[40 41 42 43 44 45 46 47 48 49]
[50 51 52 53 54 55 56 57 58 59]
[60 61 62 63 64 65 66 67 68 69]
[70 71 72 73 74 75 76 77 78 79]
[80 81 82 83 84 85 86 87 88 89]
[90 91 92 93 94 95 96 97 98 99]]
24
86
[20 21 22 23 24 25 26 27 28 29]
[ 5 15 25 35 45 55 65 75 85 95]
[[ 5]
[15]
[25]
[35]
[45]
[55]
[65]
[75]
[85]
[95]]
[[ 1 2 3]
[11 12 13]
[21 22 23]]
二、Numpy与图片结合操作
打开图片:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from PIL import Image
img = Image.oepn('./cat.jpg')
print(img)
输出:
查看图片变量类型:
ptint(type(img))
输出:
PIL.JpegImagePlugin.JpegImageFile
将图片转化为numpy数组
img_arr = np.asarray(img)
print(type(img_arr))
print(img_arr.shape)
plt.imshows(img_arr)
输出:
numpy.ndarray
(400, 400, 3)
切片功能显示通道:
# 复制图片
img_arr_copy = img_arr.copy()
plt.imshow(img_arr_copy)
# 切片功能显示通道
# 显示通道0,即R通道
plt.imshow(img_arr_copy[:,:,0])
#输出R通道的矩阵信息
print(img_arr_copy[:,:,0])
# 显示通道0,即R通道并以灰度图形式表现
plt.imshow(img_arr_copy[:,:,0],cmap='gray')
# 显示通道1,即B通道并以灰度图形式表现
plt.imshow(img_arr_copy[:,:,1],cmap='gray')
# 显示通道2,即B通道并以灰度图形式表现
plt.imshow(img_arr_copy[:,:,2],cmap='gray')