于 Jupyter 天地,借 NumPy 之手编织数据锦缎
引言
NumPy是Python科学计算的核心库之一,提供了强大的多维数组对象和丰富的数学函数,是数据科学、机器学习等领域不可或缺的工具。结合Jupyter Notebook的交互式环境,NumPy的使用变得更加直观和高效。本文将介绍如何在Jupyter中充分利用NumPy进行科学计算。
一. 搭建 Jupyter 与 NumPy 协同舞台
NumPy是第三方库,需要先安装才能使用:
Windows系统:
-
打开cmd(在菜单栏搜索cmd)
-
输入命令:
pip install numpy
或pip3 install numpy
MacOS系统:
-
打开终端(点击顶部菜单栏放大镜图标,输入"终端"或"terminal")
-
输入同样的安装命令
然后在Jupyter中导入NumPy:
import numpy as np
二. 深入剖析 NumPy 的 NDarray 核心
NumPy里最核心的的数据结构叫 ND array(N维数组) 如图:
1. 拆解 NumPy 数组与 Python 列表异同
1.1 相似之处
-
都可以通过索引获取元素
-
都可以通过切片获取子集
-
都可以迭代元素
1.2 不同之处
-
类型一致性:NumPy数组要求所有元素必须是同一类型(如全数字或全字符串),而Python列表没有这个限制
-
性能优势:对NumPy数组进行大规模数学运算时,执行速度远高于Python内置列表
-
丰富功能:NumPy提供了大量专门用于数值运算的函数(如求平均值、标准差等)
总结
特性 | ndarray | Python列表 |
---|---|---|
元素类型 | 必须一致 | 可以混合 |
内存占用 | 更小 | 更大 |
运算速度 | 更快 | 较慢 |
内置方法 | 丰富的数学运算 | 基本列表操作 |
2. 探索 NumPy 数组的多样创建路径
2.1 基本创建方法
最直观的方法是使用np.array()
将列表转换为数组:
#一维数组
arr1 = np.array([1, 2, 3])
arr1
#二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
arr2
维度判断技巧:观察最左边有几个方括号,就是几维数组。
技巧:
-
嵌套列表创建多维数组
-
最外层方括号数量决定数组维度
注意:虽然可以传入不同类型的元素,但array()
方法会强制将它们转换为同一类型,因此最好一开始就传入同类型元素。如:
np.array(["hello", True, 3.14])
2.2 解锁 NumPy 数组关键属性奥秘
NumPy数组有几个重要属性:
# 创建一个示例数组
arr = np.array([[1, 2, 3], [4, 5, 6]])print("维度数(ndim):", arr.ndim) # 2
print("形状(shape):", arr.shape) # (2, 3) - 表示2行3列
print("元素总数(size):", arr.size) # 6
print("元素类型(dtype):", arr.dtype) # int64
效果展示:
-
ndim
:返回数组的维度数 -
shape
:返回表示各维度大小的元组 -
size
:返回数组元素总数 -
dtype
:返回数组元素类型(如int64表示64位整数)
注意:
-
单元素元组用逗号表示,如(7,)
-
shape元组中数字表示各维度大小
-
int表示整数
-
64表示64位存储空间
-
不同电脑可能显示int32或int64
-
结束值不被包含,所以用21才能包含20
-
步长2确保只选择偶数
2.3 挖掘 NumPy 便捷数组创建方法宝藏
NumPy提供了多种便捷的数组创建方法:
# 全零数组
zeros = np.zeros(5) # 创建长度为5的全零数组
print(zeros)# 全一数组
ones = np.ones((2, 3)) # 创建2x3的全一数组
print(ones)# 类似range的arange
seq = np.arange(5, 10, 2) # 从5开始,到10结束(不含),步长为2
print(seq)
效果展示:
注意:zeros()
和ones()
默认创建浮点数数组(数字后有小数点)
三、使用数组练习
建议做完再看答案
答案
写出导入numpy的语句,并且给numpy别名为np。
import numpy as np
创建一个变量名为
arr1
的一维数组,里面的元素为整数6、2、-7、2、8、-2、1。arr1 = np.array([6, 2, -7, 2, 8, -2, 1])
创建一个变量名为
arr2
的二维数组,里面的元素为以下两个数组:由整数1、3、5组成的一维数组,以及由整数2、4、6组成的一维数组。arr2 = np.array([[1, 3, 5], [2, 4, 6]])
分别打印
arr1
和arr2
的维度、形状、元素数量、元素类型。arr1 = np.array([6, 2, -7, 2, 8, -2, 1]) arr1
分别打印
arr1
和arr2
的维度、形状、元素数量、元素类型。print(arr1.ndim) print(arr2.ndim) print(arr1.shape) print(arr2.shape) print(arr1.size) print(arr2.size) print(arr1.dtype) print(arr2.dtype)
创建一个变量名为
arr_all_0
的一维数组,里面的元素为6个0。arr_all_0 = np.zeros(6) print(arr_all_0)
创建一个变量名为
arr_all_1
的一维数组,里面的元素为6个1。arr_all_1 = np.ones(6) print(arr_all_1)
创建一个变量名为
arr_even
的一维数组,里面的元素为10(包括10)到20(包括20)之间的偶数。arr_even = np.arange(10, 21, 2) print(arr_even)
四、NumPy核心操作全解析
4.1 数组拼接:灵活组合数据
(1) 基础拼接方法
import numpy as np# 创建示例数组
arr1 = np.zeros(3) # [0., 0., 0.]
arr2 = np.array([7, 8, 9]) # [7, 8, 9]# 使用concatenate拼接
combined = np.concatenate([arr1, arr2])
print(combined) # 输出: [0. 0. 0. 7. 8. 9.]
关键点解析:
-
类型统一:浮点数和整数拼接时,结果会自动转为浮点数
-
多数组拼接:
np.concatenate([arr1, arr2, arr3, ...])
-
维度一致:所有输入数组必须维度相同
(2)多维数组拼接
# 创建2D数组
arr2d_1 = np.array([[1, 2], [3, 4]])
arr2d_2 = np.array([[5, 6], [7, 8]])# 垂直拼接(沿axis=0)
vertical = np.concatenate([arr2d_1, arr2d_2], axis=0)
"""
[[1 2][3 4][5 6][7 8]]
"""# 水平拼接(沿axis=1)
horizontal = np.concatenate([arr2d_1, arr2d_2], axis=1)
"""
[[1 2 5 6][3 4 7 8]]
"""
关键点和一维相同
4.2数组排序:两种方式对比
(1)返回新数组的np.sort()
arr = np.array([3, 1, 4, 2])
sorted_arr = np.sort(arr) # 返回新数组
print(sorted_arr) # [1 2 3 4]
print(arr) # 原数组不变: [3 1 4 2]
(2)原地排序的arr.sort()
arr = np.array([3, 1, 4, 2])
arr.sort() # 直接修改原数组
print(arr) # [1 2 3 4]
应用场景选择:
-
需要保留原始数据时 →
np.sort()
-
内存有限或不需要原始数据时 →
arr.sort()
4.3 索引与切片:精准数据访问
(1)基础索引技巧
arr = np.array([10, 20, 30, 40, 50])# 正索引
print(arr[0]) # 10 (第一个元素)
print(arr[2]) # 30 # 负索引
print(arr[-1]) # 50 (最后一个)
print(arr[-3]) # 30
(2) 灵活切片操作
# 基本切片
print(arr[1:4]) # [20 30 40] (索引1到3)
print(arr[:3]) # [10 20 30] (前三个)
print(arr[2:]) # [30 40 50] (索引2到最后)# 带步长的切片
print(arr[::2]) # [10 30 50] (每隔一个元素)
五、NumPy高级特性揭秘
5.1. 广播机制解析
广播机制是NumPy最强大的特性之一,允许不同形状数组进行数学运算:NumPy自动将标量"广播"到数组每个元素执行运算
类似线性代数向量和标量相乘,运算时,标量会运用在数组的每一个数字上,如下图:
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])print(a + b) # [5 7 9] (对应元素相加)
print(a * b) # [4 10 18] (对应元素相乘)
5.2 聚合运算:数据摘要统计
data = np.array([5, 2, 9, 1, 7])# 常用聚合操作
print("最大值:", data.max()) # 9
print("最小值:", data.min()) # 1
print("总和:", data.sum()) # 24
print("平均值:", data.mean()) # 4.8
print("标准差:", data.std()) # 约2.993
5.3 条件筛选:智能数据过滤
(1)基础条件筛选
arr = np.array([3, 7, 2, 9, 5, 1])# 简单条件
print(arr[arr > 5]) # [7 9]
print(arr[arr % 2 == 0]) # [2]
运行机制如下:
当数组与标量进行比较时,NumPy的广播机制会将比较运算自动应用到每个元素上,生成一个布尔值数组。这个布尔数组可以作为掩码来筛选原数组:
arr = np.array([3, 7, 2, 9, 5])
mask = arr > 6 # 生成布尔数组 [False, True, False, True, False]
result = arr[mask] # 筛选出True位置的元素 [7, 9]
关键点:
-
比较操作会广播到每个元素
-
返回的布尔数组与原数组形状相同
-
布尔索引只保留对应True位置的元素
(2)复合条件筛选
# 使用逻辑运算符
print(arr[(arr > 3) & (arr < 7)]) # [5] (大于3且小于7)
print(arr[(arr < 2) | (arr > 8)]) # [9 1] (小于2或大于8)
print(arr[~(arr > 4)]) # [3 2 1] (不大于4)
逻辑运算符对照表:
Python运算符 | NumPy运算符 |
---|---|
and | & |
or | | |
not | ~ |
六、操作数组的不同方法练习
答案:
写出导入numpy的语句,并且给numpy别名为np。
import numpy as np
创建arr1为包含了元素1、3、2、4、9的数组,创建arr2为长度为5的由1组成的一维数组,arr3为长度为3的由0组成的一维数组。
arr1 = np.array([1, 3, 2, 4, 9]) arr2 = np.ones(5) arr3 = np.zeros(3)
创建数组arr4,包括所有arr1、arr2、arr3里面的数字,并输出。
arr4 = np.concatenate([arr1, arr2, arr3]) arr4
更改arr1,对arr1里的元素进行排序,并输出排序后的结果。
arr1.sort() arr1
用两种方法打印arr1的第三个元素。
print(arr1[2]) print(arr1[-3])
输出从arr1第2个元素到第4个元素组成的的数组。
arr1[1:4]
输出arr1与arr2的同位置元素相加后组成的数组。
arr1 + arr2
输出arr1的各个元素乘以-5后组成的数组。
arr1 * -5
打印arr1数组的最大值、最小值、和、平均值。
print(arr1.max()) print(arr1.min()) print(arr1.sum()) print(arr1.mean())
筛选出arr1数组里所有小于1或大于3的数字,并打印出来。
arr1[(arr1 < 1)|(arr1 > 3)]
相关文章:
于 Jupyter 天地,借 NumPy 之手编织数据锦缎
引言 NumPy是Python科学计算的核心库之一,提供了强大的多维数组对象和丰富的数学函数,是数据科学、机器学习等领域不可或缺的工具。结合Jupyter Notebook的交互式环境,NumPy的使用变得更加直观和高效。本文将介绍如何在Jupyter中充分利用NumP…...
Mac idea WordExcel等文件git modify 一直提示修改状态
CRLF LF CR 换行符自动转换问题 查看状态:git config --global --list Mac需要开启,window下需要关闭 关闭命令:git config --global core.autocrlf false 命令解释: autocrlf true 表示要求git在提交时将crlf转换为lf&a…...
代码学习总结(三)
代码学习总结(三) 这个系列的博客是记录下自己学习代码的历程,有来自平台上的,有来自笔试题回忆的,主要基于 C++ 语言,包括题目内容,代码实现,思路,并会注明题目难度,保证代码运行结果 1 判断并构造 eleme 型字符串 简单 eleme 型字符串 判断与构造 小红有一个长…...
Vue的Diff算法原理
Vue中的Diff算法(差异算法)是虚拟DOM的核心优化手段,用于对比新旧虚拟DOM树,找出最小变更,高效更新真实DOM,其设计目标是减少DOM操作次数,提升渲染性能 diff算法: 特点:…...
CentOS系统-超详细的Kubernetes集群搭建教程(kubernetes:1.28.2)
小伙伴们,今天给大家带来一份超详细的Kubernetes集群搭建教程,保证让你从环境准备到安装验证,一路畅通无阻!🚀 🌈 一、环境准备 首先,咱们得确保硬件和软件环境都达标哦! &am…...
自动驾驶系列—GLane3D: Detecting Lanes with Graph of 3D Keypoints
🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…...
【Amazon 工具】在MacOS本地安装 AWS CLI、kubectl、eksctl工具
文章目录 安装 AWS CLI安装 kubectl安装 eksctl参考链接 安装 AWS CLI 创建访问密钥安装或更新 AWS CLI curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg" sudo installer -pkg AWSCLIV2.pkg -target /要验证 Shell 是否可以在 $PAT…...
基于GTID的主从复制
MySQL主从复制实战指南(基于二进制日志)-CSDN博客 二、基于GTID的主从复制 基于 GTID 方式:全局事务标示符,自mysql5.6版本开启的新型复制方式。 GTID的组成:server_uuid:序列号 UUID:每个m…...
linux多线(进)程编程——(8)多进程的冲突问题
前言 随着时间的推移,共享内存已经在修真界已经沦为禁术。因为使用这种方式沟通的两人往往会陷入到走火入魔的状态,思维扭曲。进程君父子见到这种情况,连忙开始专研起来,终于它们发现了共享内存存在的问题: 进程间冲…...
数据结构——八大排序算法
排序在生活中应用很多,对数据排序有按成绩,商品价格,评论数量等标准来排序。 数据结构中有八大排序,插入、选择、快速、归并四类排序。 目录 插入排序 直接插入排序 希尔排序 选择排序 堆排序 冒泡排序 快速排序 hoare…...
线性代数 | 知识点整理 Ref 1
注:本文为 “线性代数 | 知识点整理” 相关文章合辑。 因 csdn 篇幅合并超限分篇连载,本篇为 Ref 1。 略作重排,未整理去重。 图片清晰度限于引文原状。 如有内容异常,请看原文。 线性代数知识汇总 Arrow 于 2016-11-27 16:27:5…...
Docker 设置镜像源后仍无法拉取镜像问题排查
#记录工作 Windows系统 在使用 Docker 的过程中,许多用户会碰到设置了国内镜像源后,依旧无法拉取镜像的情况。接下来,记录了操作要点以及问题排查方法,帮助我们顺利解决这类问题。 Microsoft Windows [Version 10.0.27823.1000…...
线性回归 (Linear Regression) 多项式回归 (Polynomial Regression)
目录 线性回归 (Linear Regression)单变量线性回归 (Univariate linear regression)代价函数 (Cost function)梯度下降 (gradient descent) 及公式由来梯度下降的变体Quiz多类特征 (Multiple features)多元线性回归 (Multiple linear regression)向量化 (Vectorization)正规方程…...
AI在能源消耗管理及能源效率提升中的核心应用场景及技术实现
以下是 AI在能源消耗管理及能源效率提升中的核心应用场景及技术实现,分领域详细说明: 1. 实时能源监测与异常检测 AI技术应用: 物联网(IoT) 传感器数据采集:实时收集设备、建筑或工厂的能耗数据ÿ…...
dumpsys--音频服务状态信息
Audio相关的信息获取指令: dumpsys media.audio_flinger dumpsys media.audio_policy dumpsys audio media.audio_flinger dumpsys media.audio_flinger 用于获取 AudioFlinger 服务的详细状态信息。 1. 命令作用 该命令输出当前系统的 音频设备状态、活跃音频流…...
JavaScript模块化开发:CommonJS、AMD到ES模块
引言 在Web开发的早期阶段,JavaScript代码通常被编写在一个庞大的文件中或分散在多个脚本标签里,这种方式导致了全局变量污染、依赖关系难以管理、代码复用困难等问题。随着Web应用日益复杂,模块化编程成为了解决这些问题的关键。本文将带您…...
面试情景题:企业内部系统如何做微前端拆分,如何通信?
在前端开发领域,技术的演进总是伴随着业务需求的复杂化与规模化而不断向前推进。近年来,微前端(Micro Frontends)作为一种全新的架构理念,逐渐成为解决大型前端应用复杂性的重要手段。与传统的单体前端应用不同&#x…...
OpenHarmony Camera开发指导(五):相机预览功能(ArkTS)
预览是在相机启动后实时显示场景画面,通常在拍照和录像前执行。 开发步骤 创建预览Surface 如果想在屏幕上显示预览画面,一般由XComponent组件为预览流提供Surface(通过XComponent的getXcomponentSurfaceId方法获取surfaceid)&…...
鸿蒙API15 “一多开发”适配:解锁黄金三角法则,开启高效开发新旅程
一、引言 在万物互联的时代浪潮中,鸿蒙操作系统以其独特的 “一多开发” 理念,为开发者打开了一扇通往全场景应用开发的新大门。“一多开发”,即一次开发,多端部署 ,旨在让开发者通过一套代码工程,就能高效…...
RAG(检索增强生成)、ReAct(推理与行动) 和 多模态AI 的详细解析,包括三者的定义、工作原理、应用场景及协同关系
以下是 RAG(检索增强生成)、ReAct(推理与行动) 和 多模态AI 的详细解析,包括三者的定义、工作原理、应用场景及协同关系: 一、RAG(Retrieval-Augmented Generation) 1. 核心原理 …...
网络安全知识点2
1.虚拟专用网VPN:VPN用户在此虚拟网络中传输私网流量,在不改变网络现状的情况下实现安全,可靠的连接 2.VPN技术的基本原理是利用隧道技术,对传输报文进行封装,利用VPN骨干网建立专用数据传输通道,实现报文…...
DS-SLAM 运动一致性检测的源码解读
运动一致性检测是Frame.cc的Frame::ProcessMovingObject(const cv::Mat &imgray)函数。 对应DS-SLAM流程图Moving consistency check的部分 把这个函数单独摘出来,写了一下对两帧检测,查看效果的程序: #include <opencv2/opencv.hpp…...
VSTO幻灯片退出播放(C#模拟键盘鼠标的事件)
今天遇到了个问题,幻灯片放映到某一页时需要退出播放,没有找到对应的方法,所以想到了直接通过ESC键可以退出,所以模拟执行了一下ESC键,发现真的可以。在此记录一下。 C# 模拟键盘鼠标的事件整理 1、模拟键盘2、模拟鼠标…...
Echarts柱状图斜线环纹(图形的贴花图案)
单独设置 <!--此示例下载自 https://echarts.apache.org/examples/zh/editor.html?cbar-stack&codePYBwLglsB2AEC8sDeAoWszGAG0iAXMmuhgE4QDmFApqYQOQCGAHhAM70A0x6L7ACsAjQwtQqhIkwATxDUGbABaMAJsADu9HrAC-xHd3TZqNaCvEHiFcuaKTjAMzAMAzAFIu28hUXPY9ABYPQxIAI2AwTABbV…...
前端页面效果收集
文章目录 数字雨元素融化动画电子签名共享屏幕 数字雨 <canvas id"matrix"></canvas> <script>const canvas document.getElementById(matrix);const ctx canvas.getContext(2d);canvas.width window.innerWidth;canvas.height window.innerH…...
ASP.NET Core Web API 配置系统集成
文章目录 前言一、配置源与默认设置二、使用步骤1)创建项目并添加配置2)配置文件3)强类型配置类4)配置Program.cs5)控制器中使用配置6)配置优先级测试7)动态重载配置测试8)运行结果示…...
【hadoop】基于hive的B站用户行为大数据分析
1.需求分析 b站现在积累有用户数据和视频列表数据,为了配合市场部门做好用户运营工作,需要对b站的用户行为进行分析,其具体需求如下所示: 统计b站视频不同评分等级(行转列)的视频数。 统计上传b站视频最多的…...
如何搭建符号执行环境并跑通第一个测试样例
0.如题 我使用的是verilator和klee进行符号执行的学习,目前还处于起步阶段,起步阶段除了要了解符号执行的定义和作用之外就是环境的搭建了,没想到搭建环境这一步就浪费了很多时间,主要问题出在按照官方的步骤进行搭建的时候&…...
基于 Django 进行 Python 开发
基于 Django 进行 Python 开发涉及多个方面的知识点,以下为你详细介绍: 1. Django 基础 项目与应用创建 借助django-admin startproject project_name来创建新的 Django 项目。利用python manage.py startapp app_name创建新的应用。项目结构 理解项目各文件和目录的作用,像…...
【含文档+PPT+源码】基于微信小程序的非遗文化黄梅戏宣传平台的设计与实现
课程目标: 教你从零开始部署运行项目,学习环境搭建、项目导入及部署,含项目源码、文档、数据库、软件等资料 课程简介: 本课程演示的是一款基于微信小程序的非遗文化黄梅戏宣传平台的设计与实现,主要针对计算机相关…...
使用DDR4控制器实现多通道数据读写(八)
一、 本章概括 在之前的章节已经详细介绍了DDR4的AXI协议,并实现了对DDR4简单的读写操作。这一章节来建立单通道的256位数据的读写,并放出工程框架,说明整体设计思路。 二、 工程框架 三、 设计思路 DDR内存通常用于大容量数据存储…...
Oracle 处理“不允许长度为0的列”(ORA-01723)问题解析
错误原因 当使用 CREATE TABLE ... AS SELECT 或创建物化视图时,若查询结果中的某列值为空字符串()或隐式 NULL 且未显式指定数据类型,Oracle 无法推断该列的长度和类型,从而抛出 ORA-01723: zero-length columns…...
燕山大学计算机网络之Java实现TCP数据包结构设计与收发
觉得博主写的好,给博主点点免费的关注吧! 目录 摘要.................................................................................................................... 4 前言.............................................................…...
Linux操作系统学习之---进程状态
目录 明确进程的概念: Linux下的进程状态: 虚拟终端的概念: 见一见现象: 用途之一 : 结合指令来监控进程的状态: 和进程强相关的系统调用函数接口: getpid()和getppid(): fork(): fork函数创建子进程的分流逻辑: 进程之间具有独立性: 进程中存在的写时拷贝: 见一见进程状态…...
Oracle 12.1.0.2补丁安装全流程
第一步,先进行备份 tar -cvf u01.tar /u01 第二步,更新OPatch工具包 根据补丁包中readme信息汇总提示的信息,下载对应版本的OPatch工具包,本次下载的版本为: p6880880_122010_Linux-x86-64.zip opatch版本为最新的…...
第19章:基于efficientNet实现的视频内容识别系统
目录 1.efficientNet 网络 2. 猫和老鼠 3. QT推理 4. 项目 1.efficientNet 网络 本章做了一个视频内容识别的系统 本文选用的模型是efficientNet b0版本 EfficientNet 是 Google 团队在 2019 年提出的一系列高效卷积神经网络模型,其核心思想是通过复合缩放&…...
【Java面试系列】Spring Cloud微服务架构中的分布式事务解决方案与Seata框架实现原理详解 - 3-5年Java开发必备知识
【Java面试系列】Spring Cloud微服务架构中的分布式事务解决方案与Seata框架实现原理详解 - 3-5年Java开发必备知识 引言 在微服务架构中,分布式事务是一个不可避免的挑战。随着业务复杂度的提升,如何保证跨服务的数据一致性成为了面试中的高频问题。本…...
div(HTML标准元素)和view(微信小程序专用组件)的主要区别体
div(HTML标准元素)和view(微信小程序专用组件)的主要区别体现在以下方面: 一、应用场景与开发框架 适用平台不同 div是HTML/CSS开发中通用的块级元素,用于Web页面布局;view是微信小程序专…...
AI在多Agent协同领域的核心概念、技术方法、应用场景及挑战 的详细解析
以下是 AI在多Agent协同领域的核心概念、技术方法、应用场景及挑战 的详细解析: 1. 多Agent协同的定义与核心目标 多Agent系统(MAS, Multi-Agent System): 由多个独立或协作的智能体(Agent)组成ÿ…...
03_Americanas精益管理项目_StarRocks
文章目录 03_StarRocks(一)StarRocks简介1、什么是StarRocks【理解】1)概述2)适用场景2、系统架构【理解】1)系统架构图2)数据管理3、使用【熟悉】(二)表设计4、StarRocks表设计【理解】1)列式存储2)索引3)加速处理5、数据模型【掌握】5-1 明细模型1)适用场景2)创…...
CSS进度条带斑马纹动画(有效果图)
效果图 .wxml <view class"tb"><view class"tb-line" style"transform:translateX({{w%}})" /> </view> <button bind:tap"updateLine">增加进度</button>.js Page({data: {w:0,},updateLine(){this.…...
C++ static的使用方法及不同作用
在 C 里,static 是一个用途广泛的关键字,在不同场景下有不同含义,下面为你详细介绍: 1. 全局变量前的 static 当 static 用在全局变量前时,它会改变变量的链接属性。 默认全局变量:默认的全局变量具有外…...
CSS 美化页面(四)
一、浮动float属性 属性值描述适用场景left元素向左浮动,腾出右侧空间供其他元素使用,其他内容会围绕在其右侧。横向排列元素(如导航菜单)、图文混排布局。right元素向右浮动,腾出左侧空间供其他元素使…...
驱动-原子操作
前面 对并发与竞争进行了实验, 两个 app 应用程序之间对共享资源的竞争访问引起了数据传输错误, 而在 Linux 内核中, 提供了四种处理并发与竞争的常见方法: 分别是原子操作、 自旋锁、 信号量、 互斥体, 这里了解下原子…...
Flutter ListView 详解
ListView 是 Flutter 中用于构建滚动列表的核心组件,支持垂直、水平滚动以及复杂的动态布局。本文将深入解析其核心用法、性能优化策略和高级功能实现,助你打造流畅高效的列表界面。 一、基础篇:快速构建各类列表 1. 垂直列表(默…...
关于视频的一些算法内容,不包含代码等
视频算法: 视频降噪, 去除视频中的噪音,提高图像质量 工作原理: 时域降噪:利用相邻帧之间的相似性,通过平均或滤波来减少随机噪声。 空域降噪:在单帧内使用滤波器(高斯滤波器&am…...
OpenCV 图形API(43)颜色空间转换-----将 BGR 图像转换为 LUV 色彩空间函数BGR2LUV()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 将图像从BGR色彩空间转换为LUV色彩空间。 该函数将输入图像从BGR色彩空间转换为LUV。B、G和R通道值的传统范围是0到255。 输出图像必须是8位无符…...
keil报错 ..\..\Libraries\CMSIS\stm32f10x.h(298): error: #67: expected a “}“
报错原因: 通常是由于启动文件、头文件定义或驱动选择不一致导致的。以下是一些具体的解决方案,可以帮助你解决这个问题: 检查步骤: 1. 检查启动文件 确保你的启动文件与你的芯片型号相匹配。例如,如果你的芯片是S…...
图像预处理-添加水印
一.ROI切割 类似裁剪图片,但是原理是基于Numpy数组的切片操作(ROI数组切片是会修改原图数据的),也就是说这个“裁剪”不是为了保存“裁剪”部分,而是为了方便修改等处理。 import cv2 as cv import numpy as npimg cv.imread(../images/dem…...
扩展欧几里得算法【Exgcd】的内容与题目应用
1.简介 exgcd的目的是表示出二元一次不定方程的通解。 形式化地,exgcd算法就是输入a,b,c的值,返回一组x,y,满足 a x b y c axbyc axbyc。 2.1方程无整数解的情况 当 c 不能被 a ,b最小公倍…...