科学计算库NumPy
NumPy是高性能科学计算和数据分析的基础包。
认识NumPy数据对象
n维数组对象ndarray(array)
数组是编程语言中重要且复杂的数据结构,它是由相同类型元素按照一定的顺序排列的集合。ndarray具有矢量算术能力和复杂的广播能力。
- 维度又称为维数,在数学领域中是指描述对象状态所需的独立参数的数目。
- 轴(axis)是NumPy数组中十分重要的概念,它其实就代表维度。
- 秩是轴的个数,例如,一维数组只有一个轴,那么该一维数组的秩就是1。
ndarray对象中定义了重要的属性:
属性 | 具体说明 |
ndarray.ndim | 维度个数,也就是数组轴的个数:一维、二维。。。 |
ndarray.shape | 数组的维度的元祖,表示每个维度上数组的大小 |
ndarray.size | 数组元素的总个数,等于shape属性中元组元素的乘积 |
ndarray.dtype | 描述数组中元素类型的对象,既可以使用标准的Python类型创建或指定,也可以使用NumPy特有的数据类型来指定 |
ndarray.itemsize | 数组中每个元素占用的内存大小,单位为字节。| |
例如:二维数组
创建数组
#创建一维数组
import numpy as np
arr1d = np.array([1, 2, 3])#创建二维数组
arr2d = np.array([[1, 2, 3], [4, 5, 6]])#创建三维数组
arr3d = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
其他创建数组的方法:
- 通过zeros()函数可以创建元素值都是0的数组。
np.zeros((3, 3))#创建3行3列二维数组
- 通过ones()函数可以创建元素值都为1的数组。
np.ones((3, 3))
- 通过empty()函数创建一个新的数组,该数组只分配了内存空间,它里面填充的元素都是随机的。
np.empty((3, 3))
- 通过arange()函数可以创建一个等差数组,它的功能类似于range(),只不过arange()函数返回的结果是一维数组,而不是列表。
#创建第一个元素为1,最大元素不超过20,中间每个元素相差5的一维数组
np.arange(1, 20, 5)
- 通过linspace()函数也可以创建一个等差数组,不同于arange()函数,linspace()函数需要指定数组中元素的数量,而不需要指定步长。
np.empty((3, 3))
在使用前面介绍的函数创建数组时,可以通过dtype参数显式地指明元素的类型。
np.array([1, 2, 3], dtype=np.float32)np.ones((3, 3), dtype='int32')
数组的数据类型
如果要获取数组中元素数据类型的名称,则需要先通过数组访问dtype属性得到numpy.dtype类型的对象,再通过该对象访问name属性进行获取。
arr_one = np.array([[1, 2, 3], [4, 5, 6]])
arr_one.dtype.name#查看数据类型
常用数据类型
数据类型 | 说明 | 简写 |
---|---|---|
bool | 布尔类型,值为True或False | b |
int8、uint8 | 有符号和无符号的8位整数 | i或u |
int16、uint16 | 有符号和无符号的16位整数 | i2或u2 |
int32、uint32 | 有符号和无符号的32位整数 | i4或u4 |
int64、uint64 | 有符号和无符号的64位整数 | i8或u8 |
float16 | 半精度浮点数(16位,其中正负号1位,指数5位,精度10位) | f2 |
数据类型 | 说明 | 简写 |
---|---|---|
float32 | 单精度浮点数(32位,其中正负号1位,指数8位,精度23位) | f4 |
float64 | 双精度浮点数(64位,其中正负号1位,指数11位,精度52位) | f8 |
complex64 | 复数,分别用两个32位浮点数表示实部和虚部 | c8 |
complex128 | 复数,分别用两个64位浮点数表示实部和虚部 | c16 |
object_ | Python对象 | O |
string_ | 固定长度的字符串类型 | S |
NumPy中提供了astype()方法可以将数组中元素的数据类型转换其他的数据类型。
data = np.array([[1, 2, 3], [4, 5, 6]])
float_data = data.astype(np.float32)#整数转换为浮点数
float_data.dtype.name
数组的索引和切片
数组是通过索引的方式标记元素的位置,数组的类型不同,索引方式也会有一些区别。
- 每个元素对应两种索引,分别是正向索引和反向索引。正向索引从左向右依次递增,反向索引从右向左依次递减。
NumPy中可以通过整数索引和切片访问和修改数组中的元素,数组的维度不同,整数索引和切片的用法也会有所不同。对于一维数组来说,整数索引和切片的用法与Python列表中索引和切片的用法相同;对于二维数组来说,整数索引和切片的用法要复杂一些。
如果希望获取二维数组的一行元素,则可以通过“数组[行索引]”的形式实现。
arr2d = np.array([[1, 6, 11, 16, 21], [2, 7, 12, 17, 22], [3, 8, 13, 18, 23], [4, 9, 14, 19, 24], [5, 10, 15, 20, 25]])
arr2d[2]#获得第三行
如果我们想获取二维数组的单个元素,则需要通过“数组[行索引, 列索引]”的形式实现。
arr2d[2, 1]
如果希望获取二维数组的多行元素,则可以通过“数组[行索引的切片]”的形式实现。
arr2d[:2]#获取第一行到第二行
如果希望获取二维数组的部分元素,则可以通过“数组[行索引的切片, 列索引的切片]”实现。
arr2d[:2, :2]#获取前两行的前两列元素
我们也可以混合使用切片与整数索引,通过这种方式访问二维数组的部分元素。
arr2d[:, 2]#获取所有行的第三列
花式索引
花式索引是NumPy的一个术语,是指用整数数组或整数列表作为索引。
#使用花式索引操作一维数组
import numpy as np
arr = np.array([10, 6, 5, 11, 18, 16, 9, 0, 3, 20])
arr[[0, 1, 5]] #获取元素10、6和16
#使用花式索引操作二维数组
arr2d[[1, 4]]
arr2d[[1,4], [2, 3]]
- 当使用两个花式索引访问二维数组时,两个花式索引对应数组或列表的长度是相等的,并且长度不能超过二维数组中相应轴上的元素数量,否则会出现索引异常。
布尔索引
布尔索引指的是将一个布尔数组或布尔列表作为数组索引。当使用布尔索引访问一维数组时,会将一维数组中与布尔数组或布尔列表位置相同的元素进行匹配,并返回布尔数组或布尔列表中与True位置对应的元素。
name=np.array(['Tom','Lily','Jack','Rose'])
name=='Jack'#对数组name和字符串'Jack'通过运算符产生一个布尔型数组out:array([False,False,True,False])
数组的算术运算
在NumPy中,形状相同的数组之间进行任何算术运算时都会应用到元素级,即将位置相同的元素进行算术运算,所得的运算结果组成一个新的数组。
在NumPy中,形状不同的数组在执行算术计算时可能会触发广播机制,该机制会对参与运算的数组进行扩展,使扩展后的数组具有相同的形状,这样就可以对数组进行算术运算了。 不过,并非所有的数组进行算术运算都会触发广播机制,这主要取决于数组的形状是否兼容。
- 以两个数组为例,这两个数组的形状右对齐,之后沿着从右向左的顺序逐个比较同一纬度是否满足以下任意一种情况: (1)维度相等。 (2)有一方维度为1。 如果数组的形状的每个维度都满足上述任意一种情况,说明两个数组的形状兼容。
广播机制:
形状相同的数组之间的任何算术运算都会应用到各元素。同样地,数组与标量执行算术运算时也会将标量应用到各元素,以方便各元素与标量直接相加、相减、相乘、相除等操作。
通用函数
常见一元通用函数
函数 | 说明 |
abs (x) | 计算数组x中各元素的绝对值,元素值可以是整数、浮点数或复数 |
fabs(x) | 计算数组x中各元素的绝对值,绝对值都是浮点数 |
sqrt(x) | 计算数组x中各元素的平方根 |
square(x) | 计算数组x中各元素的平方 |
exp(x) | 计算数组x中各元素的指数 |
log(x) | 计算数组x中各元素e为底数的对数 |
log10(x) | 计算数组x中各元素10为底数的对数 |
log2(x) | 计算数组x中各元素2为底数的对数 |
sign(x) | 返回数组x中各元素的符号值,包括1、0、-1,其中1表示正数,-1表示负数 |
函数 | 说明 |
ceil(x) | 计算数组x中各元素的ceilling值,即大于或等于该值的最小整数 |
floor(x) | 计算数组x中各元素的floor值,即小于等于该值的最大整数 |
rint(x) | 将数组x中各元素四舍五入到的整数 |
modf(x) | 将数组x中各元素的小数部分和整数部分以两个独立数组的形式返回 |
isnan(x) | 判断数组x中各元素的值是否为NaN |
isfinite(x) | 返回表示数组x中各元素是否有限的布尔型数组 |
isinf(x) | 返回表示数组x中各元素是否无限的布尔型数组 |
sin(x) | 计算数组x中各元素的正弦值 |
sinh(x) | 计算数组x中各元素的双曲正弦值 |
函数 | 说明 |
cos(x) | 计算数组x中各元素的余弦值 |
cosh(x) | 计算数组x中各元素的双曲余弦值 |
tan(x) | 计算数组x中各元素的正切值 |
tanh(x) | 计算数组x中各元素的双曲正切值 |
arccos(x) | 计算数组x中各元素的反余弦值 |
arccosh(x) | 计算数组x中各元素的反双曲余弦值 |
arcsin(x) | 计算数组x中各元素的反正弦值 |
diff() | 计算沿给定轴的n阶离散差,返回一个由相邻元素的差值构成的数组 |
std(x) | 计算数组x中各元素的标准差 |
常见二元通用函数
函数 | 说明 |
add(x1, x2) | 将数组x1和x2中位置对应的元素相加,相当于x1+ x2 |
subtract(x1, x2) | 将数组x1和x2中位置对应的元素相减,相当于x1- x2 |
multiply(x1, x2) | 将数组x1和x2中位置对应的元素相乘,相当于x1* x2 |
divide(x1, x2) | 将数组x1和x2中位置对应的元素相除,相当于x1/ x2 |
floor_divide(x1, x2) | 将数组x1和x2中位置对应的元素整除,相当于x1// x2 |
maximum(x1, x2) | 返回数组x1和x2中位置对应的元素的最大值 |
minimum(x1, x2) | 返回数组x1和x2中位置对应的元素的最小值 |
mod(x1, x2) | 返回数组x1和x2中位置对应的元素求模后的结果,相当于x1%x2 |
copysign(x1, x2) | 将数组 x2中的元素的符号赋值给数组x1中位置对应的元素 |
函数 | 说明 |
greater(x1, x2) | 比较数组x1的元素是否大于x2的元素,相当于x1> x2 |
greater_equal(x1, x2) | 比较数组x1的元素是否大于或等于x2的元素,相当于x1>= x2 |
less(x1, x2) | 比较数组x1的元素是否小于x2的元素,相当于x1< x2 |
less_equal(x1, x2) | 比较数组x1的元素是否小于或等于x2的元素,相当于x1<=x2 |
equal(x1, x2) | 比较数组x1的元素是否等于x2的元素,相当于x1==x2 |
not_equal(x1, x2) | 比较数组x1的元素是否不等于x2的元素,相当于x1!=x2 |
logical_and(x1, x2) | 将数组x1和x2进行逻辑与运算,相当于x1&x2 |
logical_or(x1, x2) | 将数组x1和x2进行逻辑或运算,相当于x1|x2 |
数组的重塑与转置
数组的重塑是指重新将数组的形状变成指定的形状。
- 重塑前后数组中元素的总数量是不变的。 数组新形状应与原始形状兼容,也就是说新形状的行数×新形状的列数=原始形状的行数×原始形状的列数。
NumPy中提供了重塑数组的reshape()方法,该方法既可以改变具有相同维度的数组形状,又可以改变不同维度的数组形状。
array_1d = np.arange(1, 13)
print('原数组的形状:' + str(array_1d.shape))array_2d = array_1d.reshape((6,2))#一维数组重塑为二维数组
print('新数组的形状:' + str(array_2d.shape))new_array_2d = array_2d.reshape((3,4))#二维数组重塑为二维数组
print('新数组的形状:' + str(new_array_2d.shape))
print(new_array_2d)
数组转置
- 通过T属性实现数组的转置操作
- 通过transpose()方法实现数组的转置操作
T属性是最简单的转置方式,它会互换两个轴方向上的元素。
arr = np.arange(12).reshape(3, 4)
arr.T
transpose()方法需要接收一个由轴编号构成的元组,返回一个按轴编号互换后的新数组。
arr = np.arange(24).reshape((2, 3, 4))
arr.transpose((0, 1, 2)) #轴编号元组中元素的顺序默认是0、1、2
数组的其他操作
条件逻辑
在NumPy中,where() 函数相当于三元表达式x if condition else y的矢量化版本,用于根据条件返回x或者y中的元素,如果满足条件返回x 中的元素,不满足条件返回y 中的元素。
arr_x = np.array([1, 5, 7])
arr_y = np.array([2, 6, 8])
arr_con = np.array([True, False, True])
result = np.where(arr_con, arr_x, arr_y)
result
out:array([1, 6, 7])
统计运算
方法 | 说明 |
sum() | 对数组中全部或某个轴向的元素求和 |
mean() | 算术平均值 |
min() | 计算数组中的最小值 |
max() | 计算数组中的最大值 |
argmin() | 表示最小值的索引 |
argmax() | 表示最大值的索引 |
cumsum() | 所有元素的累计和 |
cumprod() | 所有元素的累计积 |
数组元素排序
如果希望对NumPy数组中的元素进行排序,可以通过sort()方法实现。
arr = np.array([[6, 2, 7], [3, 6, 2], [4, 3, 2]])
arr.sort()
arr out:array([[2, 6, 7],[2, 3, 6],[2, 3, 4]])
排序后,每一行元素按照从小到大的顺序排列。
如果希望对任意一个轴上的元素进行排序,只需要在使用sort()方法排序时传入axis参数,通过该参数指定待排序轴的编号。
arr = np.array([[6, 2, 7], [3, 6, 2], [4, 3, 2]])
arr.sort(axis=0)
arr out:array([[3, 2, 2],[4, 3, 2],[6, 6, 7]])
排序后,每一列元素按照从小到大的顺序排列。
检索数组元素是否满足条件
在NumPy中,all()函数用于判断整个数组中的元素的值是否全部满足条件,如果满足条件返回True,否则返回False。any()函数用于判断整个数组中的元素至少有一个满足条件就返回True,否则就返回False。
arr = np.array([[1, -2, -7], [-3, 6, 2], [-4, 3, 2]])
np.any(arr > 0)
np.all(arr > 0)
查找数组的唯一元素
NumPy针对一维数组提供了unique()函数,该函数用于找出数组中的唯一值,并返回一个升序排列的数组。
arr = np.array([12, 11, 34, 23, 12, 8, 11])
np.unique(arr)
判断元素是否在其他数组中
in1d()函数用于判断一维数组中的元素是否在另一个数组中,该函数返回的是一个布尔数组,布尔数组与一维数组的长度相等。
in1d(ar1, ar2, assume_unique=False, invert=False)
#ar1:待判断的数组。
#ar2:判断ar1的每个元素所依据的值。
#assume_unique:是否假设数组ar1的唯一性,默认值是False。
#invert:是否倒转数组的元素,默认值为False。
线性代数模块
NumPy中提供了一个用于矩阵乘法的dot()方法。
arr_x = np.array([[1, 2, 3], [4, 5, 6]])
arr_y = np.array([[1, 2], [3, 4], [5, 6]])
arr_x.dot(arr_y)
矩阵点积:矩阵点积的条件是矩阵A的列数等于矩阵B的行数,假设A为 m*p的矩阵,B为 p*n 的矩阵,那么矩阵A与B的乘积就是一个 m*n 的矩阵C,其中矩阵C的第i行第j列的元素可以表示为:
常见函数
函数 | 说明 |
diag() | 从一个数组中提取对角线元素或构造一个对角矩阵 |
trace() | 计算对角线元素和 |
det() | 计算矩阵的行列式 |
eig() | 计算矩阵的特征值和特征向量 |
inv() | 计算矩阵的逆 |
qr() | 计算矩阵的QR分解。QR分解将矩阵分解为一个正交矩阵Q和 一个上三角矩阵R |
svd() | 对矩阵进行奇异值(SVD)分解 |
solve() | 解线性方程组Ax=b,其中A是一个矩阵,b是一个向量 |
lstsq() | 计算Ax=b的最小二乘解 |
随机数模块
与Python的random模块相比,NumPy的random模块功能更多,它增加了一些可以高效生成多种概率分布样本值的函数
生成随机数数组
import numpy as np
np.random.rand(3, 3) #生成3行3列、元素都是随机数的二维数组np.random.rand(2, 3, 3) #生成2*3*3、元素都是随机数的三维数组
常见函数:
函数 | 说明 |
seed() | 生成随机数的种子 |
rand() | 产生均匀分布的样本值 |
randint() | 从给定的上下限范围内随机选取整数 |
normal() | 产生正态分布的样本值 |
beta() | 产生Beta分布的样本值 |
uniform() | 产生在[0,1]中的均匀分布的样本值 |
相关文章:
科学计算库NumPy
NumPy是高性能科学计算和数据分析的基础包。 认识NumPy数据对象 n维数组对象ndarray(array) 数组是编程语言中重要且复杂的数据结构,它是由相同类型元素按照一定的顺序排列的集合。ndarray具有矢量算术能力和复杂的广播能力。 - 维度又称为维数,在数学…...
【大数据】机器学习----------强化学习机器学习阶段尾声
一、强化学习的基本概念 注: 圈图与折线图引用知乎博主斜杠青年 1. 任务与奖赏 任务:强化学习的目标是让智能体(agent)在一个环境(environment)中采取一系列行动(actions)以完成一个…...
Unicode不可见字符
场景复现 在访问 https://dotnet.microsoft.com/zh-cn/apps/aspnet地址时 突然出现 https://dotnet.microsoft.com/zh-cn/apps/aspnet%E2%80%8C%E2%80%8C 但是正常来看,这个地址后面是没有%E2%80%8C%E2%80%8C的,粘贴到idea里发现了url地址后面还拼接了2…...
w172二手车交易系统的设计与实现
🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...
TRELLIS微软的图生3D
TRELLIS 教程目录: Youtube:https://www.youtube.com/watch?vJqFHZ-dRMhI 官网地址:https://trellis3d.github.io/ GitHub:https://github.com/Microsoft/TRELLIS 部署目录: 克隆项目 git clone --recurse-submodul…...
【力扣:新动计划,编程入门 —— 题解 ①】
向前看,总会有新的故事值得期盼 —— 25.1.21 2235. 两整数相加 给你两个整数 num1 和 num2,返回这两个整数的和。 示例 1: 输入:num1 12, num2 5 输出:17 解释:num1 是 12,num2 是 5 &#x…...
如何使用 Pytest -k 选项轻松筛选测试用例
关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理,构建成功的基石 在自动化测试工作之前,你应该知道的10条建议 在自动化测试中,重要的不是工具 你是否曾不得不从成百上千个测试中费力筛选,只为运行几个特定的测试&am…...
C语言之小型成绩管理系统
🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 C语言之小型成绩管理系统 目录 设计题目设计目的设计任务描述设计要求输入和输出要求验收要…...
C++ ——— 模拟实现 vector 类
目录 vector 类的框架 无参数的构造函数 析构函数 获取有效数据个数 获取容量 重载 [] 运算符 可读可写版本 只可读版本 扩容 尾插 实现迭代器 可读可写版本 只可读版本 自定义设置size长度和内容 在任意位置插入 删除任意位置的数据 赋值重载 vector 类的框…...
SpringBoot实现轻量级动态定时任务管控及组件化
1关于动态定时任务 关于在SpringBoot中使用定时任务,大部分都是直接使用SpringBoot的Scheduled注解,如下: Component public class TestTask {Scheduled(cron"0/5 * * * * ? ") //每5秒执行一次public void execute(){SimpleDa…...
STM32 FreeRTOS 任务挂起和恢复---实验
实验目标 学会vTaskSuspend( )、vTaskResume( ) 任务挂起与恢复相关API函数使用: start_task:用来创建其他的三个任务。 task1:实现LED1每500ms闪烁一次。 task2:实现LED2每500ms闪烁一次。 task3:判断按键按下逻辑,KE…...
#漏洞挖掘# 一文了解什么是Jenkins未授权访问!!!
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...
1.21学习记录
misc 2023isctf 你说爱我尊嘟假嘟 这题有点脑洞,需要把你说爱我换成Ook.将尊嘟换为Ook!假嘟换成Ook?(根据语气进行猜测吧)用在线工具解密最后用base64解密即可 2023isctf 杰伦可是流量明星 解压后是一个MP3文件&am…...
【Pandas】pandas Series groupby
Pandas2.2 Series Function application, GroupBy & window 方法描述Series.apply()用于将一个函数应用到 Series 的每个元素或整个 SeriesSeries.agg()用于对 Series 数据进行聚合操作Series.aggregate()用于对 Series 数据进行聚合操作Series.transform()用于对 Series…...
Text2SQL 智能报表方案介绍
0 背景 Text2SQL智能报表方案旨在通过自然语言处理(NLP)技术,使用户能够以自然语言的形式提出问题,并自动生成相应的SQL查询,从而获取所需的数据报表,用户可根据得到结果展示分析从而为结论提供支撑&#…...
51c~SLAM~合集1
我自己的原文哦~ https://blog.51cto.com/whaosoft/12327374 #GSLAM 自动驾驶相关~~~ 一个通用的SLAM架构和基准 GSLAM:A General SLAM Framework and Benchmark 开源代码:https://github.com/zdzhaoyong/GSLAM SLAM技术最近取得了许多成功&am…...
服务器安装ESXI7.0系统及通过离线包方式升级到ESXI8.0
新到了一台物理服务器需要安装系统,项目不急用,先拿来做些实验。 本次实验目标: 1、在物理服务器上安装ESXI7.0系统; 2、通过离线包升级方式将ESXI7.0升级为ESXI8.0。 实验环境准备: 物理服务器1台,型号…...
计算机网络 (52)秘钥分配
一、重要性 在计算机网络中,密钥分配是密钥管理中的一个核心问题。由于密码算法通常是公开的,因此网络的安全性主要依赖于密钥的安全保护。密钥分配的目的是确保密钥在传输过程中不被窃取或篡改,同时确保只有合法的用户才能获得密钥。 二、方…...
xctf-comment(Intruder,git恢复,SQL注入,Hex解码)
这题是2018年网鼎杯真题,考察 Burp Suite 的 Intruder 模块去找用户密码,使用 githacker 恢复代码(githack不行),代码审计发现SQL二次注入,尝试SQL注入读取文件内容,读取的是/home/www/.bash_hi…...
Docker Compose创建镜像服务
什么是Docker Compose 使用Docker Compose,可以使用YAML配置文件(称为Compose文件)来配置应用程序的服务,然后使用Compose CLI从配置中创建并启动所有服务 。 Compose文件的默认路径是compose.yaml(首选)…...
kafka学习笔记5 PLAIN认证——筑梦之路
在Kafka中,SASL(Simple Authentication and Security Layer)机制包括三种常见的身份验证方式: SASL/PLAIN认证:含义是简单身份验证和授权层应用程序接口,PLAIN认证是其中一种最简单的用户名、密码认证方式&…...
Walrus Learn to Earn计划正式启动!探索去中心化存储的无限可能
本期 Learn to Earn 活动将带领开发者和区块链爱好者深入探索 Walrus 的技术核心与实际应用,解锁分布式存储的无限可能。参与者不仅能提升技能,还能通过完成任务赢取丰厚奖励!🌊 什么是 Walrus? 数据主权如今正成为越…...
Linux学习笔记
1、什么是Linux Linux,一般指GNU/Linux(单独的Linux内核并不可直接使用,一般搭配GUN套件,故得此称呼),是一种免费使用和自由传播的类UNIX操作系统。它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用…...
解锁电商设计新速度:StartAI插件制作产品图实操教程
在电商设计这片竞争激烈的战场上,每一位设计师都在追求高效与创意的完美融合。繁琐的背景抠图、单一的设计模板、紧迫的时间周期,常常让我们力不从心。但现在,StartAI插件的问世,为我们的设计之路带来了革命性的改变。下面&#x…...
AutoPrompt框架和实操:如何用AutoPrompt完成电影评论和聊天审核任务?
1. AutoPrompt框架概述 1.1 框架定义与目标 AutoPrompt是一个旨在提升和完善用户提示以适应现实世界用例的提示优化框架。该框架通过迭代生成具有挑战性的边缘案例数据集,并相应地优化提示,从而自动生成针对用户意图量身定制的高质量、详细的提示。其核心目标是利用大型语言…...
修复 Kubernetes Deployment 修改后未生效的问题
在 Kubernetes 集群中,当尝试修改某些 Deployment 资源(如 calico-kube-controllers)的 image 配置时,发现修改总是未生效,并恢复到原样。这种问题通常是因为 Deployment 资源受到其他控制器(如 Operator&a…...
Excel 技巧17 - 如何计算倒计时,并添加该倒计时的数据条(★)
本文讲如何计算倒计时,并添加该倒计时的数据条。 1,如何计算倒计时 这里也要用公式 D3 - TODAY() 显示为下面这个样子的 然后右键该单元格,选 设置单元格格式 然后点 常规 这样就能显示出还书倒计时的日数了。 下拉适用到其他单元格。 2&a…...
Golang Gin系列-5:数据模型和数据库
在这篇Gin教程的博客中,我们将探索如何将模型和数据库与Gin框架无缝集成,使你能够构建健壮且可扩展的web应用程序。通过利用流行的库并遵循最佳实践,你将学习如何定义模型、建立数据库连接、执行CRUD操作以及确保基于gin的项目中的数据完整性…...
Android系统开发(十九):无缝拉伸的艺术——9-Patch 可绘制对象详解
引言 在移动开发中,背景、标题以及其他界面元素的设计质量直接影响用户体验。然而,如何让图片适应不同分辨率设备,成为开发者常常头疼的问题。这时,9-Patch 闪亮登场!它不仅可以无缝拉伸,还能保持视觉效果…...
物联网网关Web服务器--CGI开发实例BMI计算
本例子通一个计算体重指数的程序来演示Web服务器CGI开发。 硬件环境:飞腾派开发板(国产E2000处理器) 软件环境:飞腾派OS(Phytium Pi OS) 硬件平台参考另一篇博客:国产化ARM平台-飞腾派开发板…...
计算机网络 (51)鉴别
前言 计算机网络鉴别是信息安全领域中的一项关键技术,主要用于验证用户或信息的真实性,以及确保信息的完整性和来源的可靠性。 一、目的与重要性 鉴别的目的是验明用户或信息的正身,对实体声称的身份进行唯一识别,以便验证其访问请…...
Mellanox ConnectX 系列网卡的双驱动架构:以太网与 InfiniBand 的协同设计
在现代数据中心和高性能计算(HPC)环境中,网络硬件的性能和功能至关重要。Mellanox ConnectX 系列网卡以其卓越的性能和多功能性而闻名,支持从传统的以太网到高性能的 InfiniBand 网络协议。这种多功能性使得 Mellanox 网卡能够满足不同应用场景的需求,从常规的数据中心网络…...
【Java】阿里环球Antom支付对接
阿里环球Antom支付对接 线上文档地址: GitHub:https://github.com/alipay/global-open-sdk-java 文档:https://global.alipay.com/docs/ac/ams_zh-cn/session_cashier maven: <!--阿里国际支付--><dependency><g…...
【vim】vim编辑器如何设置行号
vim编辑器如何设置行号 一、**临时设置行号**二、永久设置行号2.1. **用户配置文件方式(针对当前用户)**2.2. **全局配置文件方式(谨慎使用,会影响所有用户)** 在Vim中设置行号有以下两种常见的方法: 一、…...
爬虫基础之爬取某站视频
目标网址:为了1/4螺口买小米SU7,开了一个月,它值吗?_哔哩哔哩_bilibili 本案例所使用到的模块 requests (发送HTTP请求)subprocess(执行系统命令)re (正则表达式操作)json (处理JSON数据) 需求分析: 视频的名称 F12 打开开发者工具 or 右击…...
2024嵌入式系统的未来发展与技术洞察分享
时间如白驹过隙,不知不觉又是一年,这一年收获满满。接下来,将本年度对技术的感悟和洞察分析如下,希望对大家有所帮助。 在过去几十年里,嵌入式系统技术迅速发展,成为现代电子设备和智能硬件的核心组成部分。…...
[微服务]注册中心优化
环境隔离 企业实际开发中,往往会搭建多个运行环境,例如: 开发环境测试环境预发布环境生产环境 这些不同环境之间的服务和数据之间需要隔离。 还有的企业中,会开发多个项目,共享nacos集群。此时,这些项目…...
Leetcode 3426. Manhattan Distances of All Arrangements of Pieces
Leetcode 3426. Manhattan Distances of All Arrangements of Pieces 1. 解题思路2. 代码实现 题目链接:3426. Manhattan Distances of All Arrangements of Pieces 1. 解题思路 这道题很惭愧,一开始没有搞定,后来看了答案想了想ÿ…...
【重庆市乡镇界】面图层shp格式arcgis数据乡镇名称和编码wgs84坐标无偏移内容测评
标题中的“最新重庆市乡镇界面图层shp格式arcgis数据乡镇名称和编码wgs84坐标无偏移最新”指的是一个地理信息系统(GIS)的数据集,特别设计用于ArcGIS软件。这个数据集包含了重庆市所有乡镇的边界信息,以Shapefile(.shp…...
基于ChatGPT的论文写作辅助工具研究
**基于ChatGPT的论文写作辅助工具研究** **摘要**: 随着人工智能技术的飞速发展,自然语言处理(NLP)领域取得了显著进步。ChatGPT作为OpenAI最新推出的生成式预训练Transformer模型,在文本生成、对话系统等方面展现出…...
定时器setTimeout和setInterval
setTimeOut()异步 setInterval()异步...
PCL 部分点云视点问题【2025最新版】
目录 一、问题概述二、解决方案1、软件实现2、代码实现三、调整之后博客长期更新,本文最近更新时间为:2025年1月18日。 一、问题概述 针对CloudCompare软件处理过的pcd格式点云,在使用PCL进行特征点提取、配准等实验中最终显示结果出现点云位置偏差较大的问题,本博客给出解…...
Cursor 与常见集成开发环境(IDE)的优势对比
Cursor与常见集成开发环境(IDE)的优势对比 一、AI 辅助编程能力 强大的代码生成功能: Cursor: 以其内置的强大 AI 辅助编程功能为核心优势。用户可以通过输入自然语言描述,快速生成各种编程语言的代码。例如…...
TDengine 做为 FLINK 数据源技术参考手册
Apache Flink 是一款由 Apache 软件基金会支持的开源分布式流批一体化处理框架,可用于流处理、批处理、复杂事件处理、实时数据仓库构建及为机器学习提供实时数据支持等诸多大数据处理场景。与此同时,Flink 拥有丰富的连接器与各类工具,可对接…...
不重启JVM,替换掉已经加载的类
不重启JVM,替换掉已经加载的类 直接操作字节码 使用ASM框架直接操作class文件,在类中修改代码,然后retransform就可以了 下边是BTrace官方提供的一个简单例子: package com.sun.btrace.samples;import com.sun.btrace.annotati…...
axios的使用总结
一、Axios 简介 Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js。在 Vue 项目中,它主要用于发送 HTTP 请求来获取数据(如从 API 获取数据)或者提交数据(如用户登录、注册等表单数据)。 二…...
使用 F12 查看 Network 及数据格式
在浏览器中,F12 开发者工具的 “Network” 面板是用于查看网页在加载过程中发起的所有网络请求,包括 API 请求,以及查看这些请求的详细信息和响应数据的。以下以常见的 Chrome 浏览器为例,介绍如何使用 F12 控制台查看 Network 里…...
HTML<img>标签
例子 如何插入图片: <img src"img_girl.jpg" alt"Girl in a jacket" width"500" height"600"> 下面有更多“自己尝试”的示例。 定义和用法 该<img>标签用于在 HTML 页面中嵌入图像。 从技术上讲&#x…...
Android系统开发(六):从Linux到Android:模块化开发,GKI内核的硬核科普
引言: 今天我们聊聊Android生态中最“硬核”的话题:通用内核镜像(GKI)与内核模块接口(KMI)。这是内核碎片化终结者的秘密武器,解决了内核和供应商模块之间无尽的兼容性问题。为什么重要&#x…...
每日一刷——1.20——准备蓝桥杯
链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目一 请统计某个给定范围[L, R]的所有整数中,数字2出现的次数。 比如给定范围[2, 22],数字2在数2中出现了1次,在数12中出现1次,在数20中出现1次&a…...