当前位置: 首页 > news >正文

Numpy科学计算与数据分析:Numpy数据分析与图像处理入门

Numpy实战:从数据分析到图像处理

学习目标

通过本课程,学员将学会运用Numpy库进行数据分析和图像处理。学习如何使用Numpy进行数据的高效处理,以及如何利用Numpy进行基本的图像操作。

相关知识点

Numpy的数据分析和图像处理

学习内容

1Numpy的数据分析和图像处理

1.1 Numpy数组的创建与操作

Numpy是Python中用于科学计算的基础库,它提供了一个强大的多维数组对象ndarray,以及用于处理这些数组的工具。Numpy数组与Python内置的列表相比,具有更高的效率和更多的功能,特别是在处理大型数据集时。

1.1.1 创建Numpy数组

Numpy数组可以通过多种方式创建,最常见的是使用numpy.array()函数。这个函数接受一个列表(或列表的列表)作为输入,并返回一个Numpy数组。

import numpy as np# 创建一维数组
a = np.array([1, 2, 3, 4, 5])
print(a)# 创建二维数组
b = np.array([[1, 2, 3], [4, 5, 6]])
print(b)
1.1.2 数组的基本属性

Numpy数组有多个属性,可以了解数组的结构和内容。这些属性包括ndim(数组的维度)、shape(数组的形状)、size(数组中元素的总数)和dtype(数组中元素的数据类型)。

import numpy as np# 创建一维数组
a = np.array([1, 2, 3, 4, 5])
# 创建二维数组
b = np.array([[1, 2, 3], [4, 5, 6]])# 查看数组的属性
print("a的维度:", a.ndim)
print("a的形状:", a.shape)
print("a的大小:", a.size)
print("a的数据类型:", a.dtype)print("b的维度:", b.ndim)
print("b的形状:", b.shape)
print("b的大小:", b.size)
print("b的数据类型:", b.dtype)
1.1.3 数组的索引和切片

Numpy数组支持类似于Python列表的索引和切片操作,但功能更加强大。可以使用单个索引、多个索引或切片来访问数组中的元素。

import numpy as np
# 创建一维数组
a = np.array([1, 2, 3, 4, 5])
# 创建二维数组
b = np.array([[1, 2, 3], [4, 5, 6]])# 一维数组的索引和切片
print("a的第一个元素:", a[0])
print("a的前三个元素:", a[:3])# 二维数组的索引和切片
print("b的第一行:", b[0, :])
print("b的前两行:", b[:2, :])
print("b的第一列:", b[:, 0])
1.2 数据分析中的Numpy应用

Numpy在数据分析中有着广泛的应用,特别是在处理大型数据集时。Numpy提供了许多用于数据操作和统计分析的函数,使得数据处理变得更加高效和便捷。

1.2.1 数据生成

在数据分析中,经常需要生成一些随机数据来进行测试或模拟。Numpy提供了多种生成随机数据的方法。

import numpy as np# 生成随机数据
random_data = np.random.rand(10)  # 生成10个0到1之间的随机数
print("随机数据:", random_data)# 生成正态分布数据
normal_data = np.random.normal(0, 1, 10)  # 生成10个均值为0,标准差为1的正态分布数据
print("正态分布数据:", normal_data)
1.2.2 数据操作

Numpy提供了丰富的数组操作函数,如求和、求平均值、排序等。

import numpy as np
# 求和
sum_data = np.sum(random_data)
print("随机数据的和:", sum_data)# 求平均值
mean_data = np.mean(random_data)
print("随机数据的平均值:", mean_data)# 排序
sorted_data = np.sort(random_data)
print("随机数据的排序:", sorted_data)
1.2.3 数据筛选

在数据分析中,经常需要根据某些条件筛选数据。Numpy提供了布尔索引功能,可以方便地进行数据筛选。

import numpy as np
# 布尔索引
filtered_data = random_data[random_data > 0.5]
print("大于0.5的随机数据:", filtered_data)
1.3 图像处理中的Numpy应用

Numpy在图像处理中也有广泛的应用。图像可以被视为一个二维或三维的数组,其中每个元素代表一个像素的值。Numpy提供了许多用于图像处理的函数,使得图像处理变得更加简单和高效。

1.3.1 读取和显示图像

首先,需要使用wget的方式进行数据的下载,下载完成后读取图像并将其转换为Numpy数组。可以使用PIL库来读取图像。

!wget --no-check-certificate https://model-community-picture.obs.cn-north-4.myhuaweicloud.com/ascend-zone/notebook_datasets/f11284f42ed511f0a34cfa163edcddae/example.png
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt# 读取图像
image = Image.open('example.png')
image_array = np.array(image)# 显示图像
plt.imshow(image_array)
plt.axis('off')
plt.show()
1.3.2 图像的基本操作

Numpy数组可以用于对图像进行基本操作,如裁剪、翻转和旋转。

import numpy as np
# 裁剪图像
cropped_image = image_array[100:300, 100:300, :]
plt.imshow(cropped_image)
plt.axis('off')
plt.show()# 翻转图像
flipped_image = np.flip(image_array, axis=0)
plt.imshow(flipped_image)
plt.axis('off')
plt.show()# 旋转图像
rotated_image = np.rot90(image_array, k=1)
plt.imshow(rotated_image)
plt.axis('off')
plt.show()
1.3.3 图像的像素操作

Numpy数组可以用于对图像的像素进行操作,如调整亮度和对比度。

import numpy as np
# 调整亮度
brightened_image = image_array + 50
brightened_image = np.clip(brightened_image, 0, 255)  # 确保像素值在0到255之间
plt.imshow(brightened_image)
plt.axis('off')
plt.show()# 调整对比度
contrast_image = 1.5 * (image_array - 50) + 50
contrast_image = np.clip(contrast_image, 0, 255)  # 确保像素值在0到255之间
contrast_image_normalized = contrast_image / 255.0  # 归一化到 [0, 1]plt.imshow(contrast_image_normalized)
plt.axis('off')
plt.show()

1. Numpy入门:数组操作与科学计算基础
2. Numpy入门:多平台安装与基础环境配置
3. Numpy数组创建与应用入门
4. Numpy数组属性入门:形状、维度与大小
5. Numpy数组索引与切片入门
6. Numpy数组操作入门:合并、分割与重塑
7. Numpy数学函数入门与实践
8. Numpy数据分析基础:统计函数应用
9. Numpy随机数生成入门
10. Numpy线性代数基础与实践
11. Numpy文件操作入门:数组数据的读取与保存
12. Numpy广播机制入门与实践
13. Numpy布尔索引与花式索引实战
14. Numpy高效数据处理与优化
15. Numpy数据分析与图像处理入门

http://www.dtcms.com/a/320653.html

相关文章:

  • [激光原理与应用-182]:测量仪器 - 光束型 - 光束质量分析仪
  • 无人机航拍数据集|第9期 无人机风力电机表面损伤目标检测YOLO数据集2995张yolov11/yolov8/yolov5可训练
  • WORD接受修订,并修改修订后文字的颜色
  • 2-等级保护
  • LabVIEW多循环架构
  • (已解决)IDEA突然无法使用Git功能
  • 利用千眼狼sCMOS相机开展冷离子云成像与测量实验
  • Mac上安装和配置MySQL(使用Homebrew安装MySQL 8.0)
  • LeetCode 面试经典 150_数组/字符串_加油站(14_134_C++_中等)(贪心算法)
  • OpenBMC Entity Manager 深度解析:架构、原理与应用实践
  • 【优选算法】多源BFS
  • C#调用Unity实现设备仿真开发
  • Java+uniapp+websocket实现实时聊天,并保存聊天记录
  • (nice!!!)(LeetCode 每日一题) 808. 分汤 (深度优先搜索dfs)
  • Latex中公式部分输入正体的字母\mathrm{c}
  • [激光原理与应用-183]:测量仪器 - 光束型 - 光束参数乘积(BPP)的本质与含义,聚焦能力与传输稳定性的物理矛盾。
  • 汽车零部件深孔加工质控升级:新启航激光频率梳 3D 测量解决传统光学扫描遮挡
  • Linux网络--2、Socket编程
  • 力扣-238.除自身以外数组的乘积
  • 《Leetcode》-面试题-hot100-链表
  • 力扣热题100------287.寻找重复数
  • 大语言模型提示工程与应用:提示词基础使用方式
  • 9.2 通过DuEDrawingControl把eDrawing嵌入到C#中显示
  • windows线程基础
  • leetcode热题——有效的括号
  • FPS游戏准心跳动效果实现指南
  • 为什么通过CreateThread创建的线程调用C/C++运行库函数不稳定
  • Sum of Four Values(sorting and searching)
  • 力扣-438.找到字符串中所有字母异位词
  • I/O原理与服务。