Numpy与图片操作

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')

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嗌三嗮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值