当前位置: 首页 > 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.lryc.cn/news/613958.html

相关文章:

  • 使用Python提取PDF大纲(书签)完整指南
  • Date、Calendar、LocalDateTime:Java 处理时间的类该怎么选?
  • 【网络自动化】利用Python脚本与计划任务,实现H3C/HPE设备配置无人值守备份
  • 安装向量数据库chromadb
  • Java+uniapp+websocket实现实时聊天,并保存聊天记录
  • mac笔记本如何重新设置ssh key
  • React Hooks 完全指南:从概念到内置 Hooks 全解析
  • 五种IO模型与⾮阻塞IO
  • leetcode1456:定长子串中元音的最大数目(定长滑动窗口)
  • 云平台运维工具 —— 阿里云原生工具
  • 云原生时代的 Linux:容器、虚拟化与分布式的基石
  • react的form.resetFields()
  • 人工智能之数学基础:事件独立性
  • Java中重写和重载有哪些区别
  • MySQL vs PostgreSQL 深度对比:为你的新项目选择正确的开源数据库 (2025)
  • LVS高可靠
  • Java-注解
  • Azure OpenAI gpt5和AWS Secrets Manager构建智能对话系统
  • Windows10中wls2因网络问题无法拉取Docker/Podman容器镜像
  • mysql复制连接下的所有表+一次性拷贝到自己的库
  • 深入解析C++流运算符(>>和<<)重载:为何必须使用全局函数与友元机制
  • 专利服务系统平台|个人专利服务系统|基于java和小程序的专利服务系统设计与实现(源码+数据库+文档)
  • 基于Flask + Vue3 的新闻数据分析平台源代码+数据库+使用说明,爬取今日头条新闻数据,采集与清洗、数据分析、建立数据模型、数据可视化
  • 在 Debian 系统上安装 Redis服务
  • 驾驭数据库迁移:在 Django 与 Flask 中的全流程实战指南
  • Spark01-初识Spark
  • 柠檬笔试——野猪骑士
  • apache cgi测试
  • Docker容器部署前端Vue服务
  • Spring Boot + Angular 实现安全登录注册系统:全栈开发指南