pandas基础使用
pandas基础使用
基本介绍
- 类似于字典形式的numpy,可以给它的不同行和不同列进行重命名。
import numpy as np
import pandas as pd
# 创建一个序列
s = pd.Series([1,4,True,np.nan,55.0])
- 创建date format日期矩阵
import numpy as np
import pandas as pd
dates = pd.date_range('20241231',periods=6)
- 创建DataFrame数据结构(类似于二维表格或电子表格)
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=['a','b','c','d'])
其中np.random.randn(6,4)表示随机产生一个六行四列的矩阵,其中的数值近似服从正态分布。如果不给定索引列以及行的索引名称,会默认生成有序序列。
import numpy as np
import pandas as pd
df1 = pd.DataFrame(np.arange(12).reshape(3,4))
除此之外,还有一种来生成DataFrame数据结构
import numpy as np
import pandas as pd
df2 = pd.DataFrame({'A':1.,'B':pd.Timestamp('20241231'),'C':pd.Series(1,index=list(range(4)),dtype='float32'),'D':np.array([3]*4,dtype='int32'),'E':pd.Categorical(["test","train","test","train"]),"F":"foo"})
df2.dtypes
# 返回每一个元素的类型
df2.index
# 返回元素的每一行的索引
df2.columns
# 返回元素的每一列的标签
df2.values
# 返回元素的所有values
df2.describe()
# 描述数据的内容,比如方差、平均值等等。
df2.T
# 矩阵转置
df2.sort_index(axis=0,ascending=False)
# 对维度为列的行数据进行排序,并指定排序的格式:正序或倒序,除了对索引进行排序,也可对value值进行排序
df2.sort_values(by="E")
选择数据
列选择
- 通过列名选择单个列:如果有一个DataFrame df,可以使用df[‘列名’]来选择一列,这会返回一个Series。
import numpy as npimport pandas as pddates = pd.date_range('20241231',periods=6)df = pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=["A","B","C","D"])print(df['A']) # 也可以通过print(df.A)是同样的效果
- 选择多个列:使用df[[“列名1”,“列名3”]]的形式。会返回一个DataFrame。
import numpy as npimport pandas as pddates = pd.date_range('20241231',periods=6)df = pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=["A","B","C","D"])print(df[["A","C"]])
行选择
- 基于行索引标签选择:可以用df.loc[行索引标签]来选择单行。如果要选择多行,格式为df.loc[行索引标签列表]。例如,df.loc[“20241231”:“20250102”]选择第一行到第三行或者df.loc[[“20241231”,“20250102”]]选择第一行和第三行的数据。
import numpy as npimport pandas as pddates = pd.date_range('20241231',periods=6)df = pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=["A","B","C","D"])print(df.loc["20241231":"20250102"])print(df.loc[["20241231","20250102"]]) #选择第一行和第三行的数据
- 基于行索引位置选择:用df.iloc[行索引位置]选择单行,df.iloc[行索引位置列表]选择多行。比如df.iloc[3]表示选择第四行,df.iloc[[0,1,3]]表示选择第一行、第二行以及第四行,df.iloc[0:2]选择第一行到第三行
import numpy as npimport pandas as pddates = pd.date_range('20241231',periods=6)df = pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=["A","B","C","D"])# print(df.iloc[3])# print(df.iloc[[0,1,3]])print(df.iloc[0:3])
- 条件筛选:可以根据条件来选择行。例如,df[df[‘语文成绩’] > 80]会返回语文成绩大于80的所有行。还可以使用多个条件组合。
import numpy as npimport pandas as pddates = pd.date_range('20241231',periods=6)df = pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=["A","B","C","D"])print(df[df[["A","C"]] > 8])
设置值
-
通过列名设置列的值
- 整体替换列的值:比如把A列的全部值替换为0,可以这样做:df[‘A’] = 0
import numpy as npimport pandas as pddates = pd.date_range('20241231',periods=6)df = pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=["A","B","C","D"])df['A']=0print(df)
- 基于条件设置列的值:可以根据一定的条件来设置列的值。例如,将A列中大于10的值设为-1,df[‘A’] [df[‘A’] > 10] = -1
import numpy as npimport pandas as pddates = pd.date_range('20241231',periods=6)df = pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=["A","B","C","D"])df['A'][df['A'] > 10] = -1print(df)
-
通过行索引和列名设置单个或多个值
- 使用loc索引器设置单个值:loc是基于标签的索引方式。例如,要将索引为"2024-12-31"这一行的B列设为100,可以使用df.loc[‘20241231’,‘B’]=100
import numpy as npimport pandas as pddates = pd.date_range('20241231',periods=6)df = pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=["A","B","C","D"])df.loc['20241231','B']=100print(df)
- 使用loc索引器设置多个值(一个区域):假设要将索引从"2025-01-01"到"2025-01-02"这两行的C列和D列的值设为新的值,可以这样做:df.loc[‘20250101’:‘20250102’,[“C”,“D”]] =5
import numpy as npimport pandas as pddates = pd.date_range('20241231',periods=6)df = pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=["A","B","C","D"])df.loc['20250101':'20250102',['C','D']] = 5print(df)
-
使用iloc索引器设置值(基于位置)
- 设置单个值:iloc是基于位置的索引方式。如果要将第一行的第一列元素的值设置为5,df.iloc[0,0]= 5
import numpy as npimport pandas as pddates = pd.date_range('20241231',periods=6)df = pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=["A","B","C","D"])df.iloc[0,0]= 5print(df)
- 设置多个值(区域):比如要将前三行的后两列的值设为30
import numpy as npimport pandas as pddates = pd.date_range('20241231',periods=6)df = pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=["A","B","C","D"])df.iloc[0:3,2:4] = 30print(df)
处理丢失数据
识别丢失数据
- isnull()和notnull()函数:isnull()用于返回一个布尔型的DataFrame或Series,其中缺失值对应的位置为True,非缺失值为False。而notnull()函数则相反。
import numpy as np
import pandas as pd
dates = pd.date_range('20241231',periods=6)
df = pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=["A","B","C","D"])
df.iloc[0,1]=np.nan
df.iloc[2,3]=np.nan
df.isnull()
# 也可以用notnull()
df.notnull()
删除丢失数据
- dropna()方法:对于DataFrame,可以在axis参数设置0(按行删除)或1(按列删除)。例如:df.dropna(axis=0)会删除包含行缺失值的行。
- 还可以通过how参数控制删除的条件,how=‘any’(默认值)表示只要某行/列包含缺失值就删除,而how='all’表示只有当某行/某列全部是缺失值时才删除。
import numpy as np
import pandas as pd
dates = pd.date_range('20241231',periods=6)
df = pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=["A","B","C","D"])
df.iloc[0,1]=np.nan
df.iloc[2,3]=np.nan
df.dropna(axis=0,how='any')
填充丢失数据
- fillna()方法:可以用一个特定的值填充缺失值。例如,df.fillna(0)会将DataFrame中所有的缺失值都填充为0。
- 也可以使用字典来为不同的列制定不同的填充值。如df.fillna({‘B’:1,‘D’:2})会对第一列的缺失值填充为1,对第四列的缺失值填充为2。
- 还可以使用method参数进行向前填充(method=‘ffill’)或向后填充(method=‘bfill’)。向前填充使用缺失值前面的一个非缺失值来填充;向后填充则相反。例如,df.fillna(method=‘ffill’)会按照从前到后的顺序填充缺失值。
import numpy as np
import pandas as pd
dates = pd.date_range('20241231',periods=6)
df = pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=["A","B","C","D"])
df.iloc[0,1]=np.nan
df.iloc[2,3]=np.nan
print(df.fillna(0)) # 将缺失值全部填充为0
print(df.fillna({"B":1,"D":2}))
print(df.fillna(method="ffill")) # 向前填充
导入导出数据
导入数据
- 从CSV文件导入:使用read_csv()函数。例如:df=pd.read_csv(‘data.csv’)可以将名为data.csv的文件读取到DataFrame中。可以通过参数来指定分隔符(sep参数,默认是逗号)、编码方式(encoding参数等)。如df=pd.raed_csv(‘data.csv’,sep=“;”,encoding=“utf-8”)用于读取以分号为分隔符、编码为utf-8的CSV文件。
- 从excel文件导入:使用read_excel()函数。如:df=pd.read_excel(“data.xlsx”)可以读取excel文件。可以通过sheet_name参数指定要读取的读取的工作表名称或索引,例如df=pd.read_excel(‘data.xlsx’,sheet_name=“Sheet1”)。
import numpy as np
import pandas as pd
data = pd.read_csv('data.csv')
# 读取excel数据
data = pd.read_excel('data.excel')
- 从SQL数据库导入:使用read_sql()函数,首先需要建立与数据库的连接。
import pandas as pd
from sqlalchemy import creat_engine
engine = create_engine("mysql+pymysql://user:password@localhost:3306/database_name")
导出数据
- 导出到CSV文件:使用to_csv()方法。例如,df.to_csv(‘new_data.csv’,index=False)可以将DataFrame中的数据保存为CSV文件。index = False参数表示不保存行索引。
- 导出到excel文件:使用to_excel()方法。如,df.to_excel(‘new_data.xlsx’,sheet_name=Sheet1,index=Fales)可以将数据保存到excel的指定工作表中,同样index=False表示不保存行索引。
import numpy as np
import pandas as pd
dates = pd.date_range('20241231',periods=6)
df = pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=["A","B","C","D"])
df.to_excel("new_data.xlsx",sheet_name='sheet1',index=False)
df.to_csv("new_data.csv",index=False)
合并concat
在pandas中,concat函数主要用于沿着一条轴将多个对象(如DataFrame或Series)合并到一起。
合并相同类型的对象
- 对于DataFrame:假设我们有三个DataFrame,df1、df2以及df3,他们有相同的列名,可以使用concat函数将他们按行合并(默认是axis=0),结果会是一个包含df1、df2和df3所有行的新DataFrame,行索引会自动排列。
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.ones((3,4))*0,columns=["a","b","c","d"])
df2 = pd.DataFrame(np.ones((3,4))*1,columns=["a","b","c","d"])
df3 = pd.DataFrame(np.ones((3,4))*2,columns=["a","b","c","d"])
result = pd.concat([df1,df2,df3])
print(result)
- 对于Series:假设我们有两个series,s1和s2,可以类似的合并,使用concat合并,这样就会得到一个新的series,包含s1和s2中的所有元素。
import numpy as np
import pandas as pd
s1 = pd.Series([1,2])
s2 = pd.Series([2,3])
result = pd.concat([s1,s2])
print(result)
合并时指定轴
- 除了按行合并,还可以按列合并(axis=1)。比如,还是上述df1、df2和df3,合并后会得到一个新的DataFrame。
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.ones((3,4))*0,columns=["a","b","c","d"])
df2 = pd.DataFrame(np.ones((3,4))*1,columns=["a","b","c","d"])
df3 = pd.DataFrame(np.ones((3,4))*2,columns=["a","b","c","d"])
result = pd.concat([df1,df2,df3],axis=1)
print(result)
处理索引重复的情况
- 当合并的DataFrame或Series有相同的索引时,concat函数有不同的处理方式。假设df1与df2有相同的索引,如果直接合并(axis=0)会得到一个包含所有行的DataFrame,索引会有重复。可以通过ignore_index=True参数来重新生成索引,避免索引重复问题,这样得到的DataFrame的索引会是从0开始的连续整数。
import pandas as pd
df1 = pd.DataFrame({"A":[1,2]},index=[0,1])
df2 = pd.DataFrame({"B":[3,4]},index=[0,1])
result = pd.concat([df1,df2],ignore_index=True)
print(result)
join功能的inner及outer
- inner:在DataFrame的join方法中,默认是左连接。如果想要实现类似内连接的功能,它会根据索引来匹配两个DataFrame中相同的索引值,返回这些匹配索引对应的行组合。
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.ones((3,4))*0,columns=["a","b","c","d"],index=[1,2,3])
df2 = pd.DataFrame(np.ones((3,4))*1,columns=["b","c","d","e"],index=[2,3,4])
res = pd.concat([df1,df2],join="inner")
print(res)
- outer:在DataFrame的join中,会基于索引进行外连接。这意味着返回的两个DataFrame索引的并集对应的行组合,对于没有匹配上的索引行,对应列会填充NaN。
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.ones((3,4))*0,columns=["a","b","c","d"],index=[1,2,3])
df2 = pd.DataFrame(np.ones((3,4))*1,columns=["b","c","d","e"],index=[2,3,4])
res = pd.concat([df1,df2],join="outer")
print(res)
合并merge
- merge是pandas中用于将两个DataFrame对象根据一个或多个键(可以是列名或索引)合并的函数。
合并参数
参数 | 介绍 |
---|---|
how | 连接方式(左连接left,右连接right,内连接inner,外连接outer)默认内连接 |
on | 用来做连接键的列名(两表必须相同) |
left_on | 左表用来做连接键的列名 |
right_on | 右表用来做连接键的列名 |
left_index | True表示左表索引列作为连接键 |
right_index | True表示右表索引键作为连接键 |
suffix | 给两个表加上后缀进行区分 |
- 基于单个相同列名合并
import numpy as np
import pandas as pd
df1 = pd.DataFrame({'student_id':[1,2,3],'name':["alex","bob","charlie"]})
df2 = pd.DataFrame({'student_id':[2,3,4],'grade':[80,85,90]})
merge_df = pd.merge(df1,df2,on="student_id")
print(merge_id)
- 基于多个相同列名合并(on参数传入列表)
import numpy as np
import pandas as pd
df1 = pd.DataFrame({'customer_id':[101,102,103],'product_id':[201,202,203],'purchase_date':["2024-01-01","2024-02-01","2024-03-01"]})
df2 = pd.DataFrame({"customer_id":[102,103,104],"product_id":[202,203,204],'price':[10.0,12.0,15.0]})
merge_id = pd.merge(df1,df2,on=["customer_id","product_id"])
print(merge_id)
- 基于不同列名合并(使用left_on和right_on)
import numpy as np
import pandas as pd
df1 = pd.DataFrame({"id_left":[501,502,503],'name':["alex"."bob","ella"]})
df2 = pd.DataFrame({"id_right":[502,503,504],"department":["hr","it","finance"]})
merge_df = pd.merge(df1,df2,left_on="id_left",right_on="id_right")
print(merge_df)
how参数
在pandas的merge函数中,how用于指定合并的方式,这决定了如何处理两个数据框中键(用于合并的列)的匹配关系。
- inner(内连接,默认值)
只保留两个DataFrame中键值完全匹配的行。就像是求两个集合的交集,只有在左右两个DataFrame中,合并键相同的的行才会被保留下来,其余行都被丢弃。
- outer(外连接)
保留两个DataFrame的所有行,对于键不匹配的部分用NaN填充。如同求两个集合的并集,会把左右两gDataFrame中的所有行都包含进来。
- left
以左边的DataFrame为基础,保留左边的DataFrame的所有行,右边DataFrame中只有与左边的DataFrame键匹配的行才会被合并进来,不匹配的部分用NaN填充。
- right
跟左连接相反,以右边的dataFrame为基础,保留右边的DataFrame的所有行,左边的DataFrame中只有与右边的DataFrame键匹配的行才会被合并进来,不匹配的部分用于NaN填充。
import pandas as pd
df1 = pd.DataFrame({"key":["A","B","C","D"],"value1":[1,2,3,4]})
df2 = pd.DataFrame({"key":["B","D","E","F"],"value2":[5,6,7,8]})
# 内连接(how="inner")
inner_merge = pd.merge(df1,df2,on="key",how="inner")
print("内连接结果:")
print(inner_merge)
# 外连接(how="outer")
outer_merge = pd.merge(df1,df2,on="key",how="outer")
print("外连接结果:")
print(outer_merge)
# 左连接(how="left")
print(left_merge)
# 右连接(how="right")
right_merge = pd.merge(df1,df2,on="key",how="right")
print("右连接结果:")
print(right_merge)
suffix
在pandas中,suffix主要用于在合并(merge)数据时给列明添加后缀。当使用merge函数将两个DataFrame合并在一起,如果两个DataFrame存在相同列名,就会出现列名冲突的情况。suffixes参数可以接受一个包含两个字符串的元组,用来给合并后的DataFrame中的重叠列名添加后缀,以区分来自不同DataFrame的列。
import pandas as pd
df1 = pd.DataFrame({"key":["a","b","c"],"value":[1,2,3]})
df2 = pd.DataFrame({"key":["a","b","d"],"value":[4,5,6]})
merge_df = pd.merge(df1,df2,on="key",suffixes=("_left","_right"))
print(merge_df)
plot画图
对于Series:
- 如果有一个Series对象,例如:s = pd.Series([1,2,3,4]),直接调用s.plot()就可以绘制简单的线图。还可以通过传递参数给plot()方法来改变图形类型。例如:s.plot(kind=“bar”)表示绘制柱状图。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = pd.Series(np.random.randn(1000),index=np.arange(1000))
data = data.cumsum
data.plot()
plt.show()
对于DataFrame
- 当有一个DataFrame对象时,每一列的数据可以被视为一个Series。默认情况下,df.plot()会绘制每一列数据的线图,其中x轴是索引,y轴是每列的数据。同样可以通过kind参数指定图形类型。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = pd.DataFrame(np.random.randn(1000,4),index=np.arange(1000),columns=list("ABCD"))
data = data.cumsum()
data.plot()
plt.show()
相关文章:
pandas基础使用
pandas基础使用 基本介绍 类似于字典形式的numpy,可以给它的不同行和不同列进行重命名。 import numpy as np import pandas as pd # 创建一个序列 s pd.Series([1,4,True,np.nan,55.0])创建date format日期矩阵 import numpy as np import pandas as pd dates…...
2024.1.5总结
今日不开心:这周本来想花点时间学习的,没想到全都花在刷视频,外出消费去了。 今日思考: 1.找对象这件事确实不能强求,顺其自然吧,单身和不单身,其实,各有各的利弊。在一次坐地铁的过程中,我一…...
解释一下:运放的输入偏置电流
输入偏置电流 首先看基础部分:这就是同相比例放大器 按照理论计算,输入VIN=0时,输出VOUT应为0,对吧 仿真与理论差距较大,有200多毫伏的偏差,这就是输入偏置电流IBIAS引起的,接着看它的定义 同向和反向输入电流的平均值,也就是Ib1、Ib2求平均,即(Ib1+Ib2)/2 按照下面…...
Federation机制的实现
1.关闭Hadoop的HDFS和YARN,依次执行“stop-yarn.sh”和“stop-dfs.sh”命令关闭Hadoop的YARN和HDFS。 2.删除3台虚拟机上的临时文件: 3.修改hdfs-site.xml配置文件,进入虚拟机liumengting1的/export/servers/hadoop-3.3.4/etc/hadoop目录&…...
120.Jenkins里的Pipeline Script
目录 1. **Declarative Pipeline** 主要部分 示例 2. **Scripted Pipeline** 主要部分 示例 3. **常用指令和功能** 环境变量 工具管理 文件操作 构建触发器 并行执行 异常处理 用户交互 4.**两种类型的特点** 1. **声明式 Pipeline (Declarative Pipeline)** 中…...
SpringBoot3-整合WebSocket指南
更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ SpringBoot3-整合WebSocket指南 1. 什么是WebSocket?2. 环境准备2.1 项目依赖 3. WebSocket配置3.1 WebSocket配置类3.2 自定义WebSocket处理器 4. 控制器5. 前端实现5.…...
【npm依赖包介绍】借助rimraf依赖包,在用npm run build构建项目时,清空dist目录,避免新旧混合
文章目录 背景如何使用附上rimraf的介绍和说明主要作用使用场景安装使用示例异步删除同步删除 参考资料 背景 在npm run build时,一般都会清空项目中已有的dist目录再构建,避免新旧混合。 如何使用 可以简单使用rimraf这个npm依赖包。 目前rimraf的最…...
python学opencv|读取图像(二十四)使用cv2.putText()绘制文字进阶-倾斜文字
【1】引言 前述学习进程中,我们已经掌握了pythonopencv绘制文字的基本技能,相关链接为: python学opencv|读取图像(二十三)使用cv2.putText()绘制文字-CSDN博客 在这里,我们使用不同的字体、线条颜色和线…...
【简博士统计学习方法】第1章:3. 统计学习方法的三要素
3. 统计学习方法的三要素 3.1 监督学习的三要素 3.1.1 模型 假设空间(Hypothesis Space):所有可能的条件概率分布或决策函数,用 F \mathcal{F} F表示。 若定义为决策函数的集合: F { f ∣ Y f ( X ) } \mathcal{F…...
“AI智慧语言训练系统:让语言学习变得更简单有趣
大家好,我是你们的老朋友,一个热衷于探讨科技与教育结合的产品经理。今天,我想和大家聊聊一个让语言学习变得不再头疼的话题——AI智慧语言训练系统。这个系统可是我们语言学习者的福音,让我们一起来揭开它的神秘面纱吧࿰…...
机器学习笔记 - 单幅图像深度估计的最新技术
1、深度估计简述 单眼深度估计是一项计算机视觉任务,AI 模型从单个图像中预测场景的深度信息。模型估计场景中对象从一个照相机视点的距离。单目深度估计已广泛用于自动驾驶、机器人等领域。深度估计被认为是最困难的计算机视觉任务之一,因为它要求模型理解对象及其深度信息之…...
洛谷:P1540 [NOIP2010 提高组] 机器翻译
[NOIP2010 提高组] 机器翻译 题目背景 NOIP2010 提高组 T1 题目描述 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于…...
2025第2周 | JavaScript中的函数的参数默认值和剩余参数
目录 1. 函数的默认值1.1 ES5的时候默认值写法1.2 es6的默认值1.3 babel转换之后1.4 有默认值的参数建议放到最后1.5 有默认值的函数length属性 2. 参数为对象时默认值及解构2.1 默认值和解构一起使用2.2 默认值为一个空对象 3. 剩余参数3.1 剩余参数必须放到最后3.2 剩余参数和…...
Unity学习之UGUI(三)
十二、Slider 1、作用 Slider是滑动条组件,是UGUI中用于处理滑动条相关交互的关键组件 创建Slider默认包括4个对象 父对象:Slider组件依附的对象 子对象:背景图,进度图,滑动块三组对象 2、主要参数 3、代码控制 voi…...
分享3个国内使用正版GPT的网站【亲测有效!2025最新】
1. molica 传送入口:https://ai-to.cn/url/?umolica 2. 多帮AI 传送入口:https://aigc.openaicloud.cn?inVitecodeMYAAGGKXVK 3. 厉害猫 传送入口:https://ai-to.cn/url/?ulihaimao...
ffmpeg-avio实战:打开本地文件或者网络直播流dome
使用ffmpeg打开打开本地文件或者网络直播流的一个小dome。流程产靠ffmpeg4.x系列的解码流程-CSDN博客 #include <libavcodec/avcodec.h> #include <libavformat/avformat.h> #include <libavformat/avio.h> #include <libavutil/file.h> #include &l…...
三维管线管网自动化建模工具MagicPipe3D V3.6.0
经纬管网建模系统MagicPipe3D,本地离线参数化构建地下管网三维模型(包括管道、接头、附属设施等),输出标准3DTiles、Obj模型等格式,支持Cesium、Unreal、Unity、Osg等引擎加载进行三维可视化、语义查询、专题分析。欢迎…...
设计基于检索增强生成的个性化语言模型(RAG-based LLM)
设计基于检索增强生成的个性化语言模型(RAG-based LLM) 引言 在当今快速发展的自然语言处理技术中,生成式预训练模型(LLM)对个性化和可靠结果的需求不断增加。为了满足这种需求,基于检索增强生成…...
Oracle Dataguard(主库为单节点)配置详解(5):使用 rman 复制技术(DUPLICATE)同步主库到备库
Oracle Dataguard(主库为单节点)配置详解(5):使用 rman 复制技术(DUPLICATE)同步主库到备库 目录 Oracle Dataguard(主库为单节点)配置详解(5)&am…...
119.使用AI Agent解决问题:Jenkins build Pipeline时,提示npm ERR! errno FETCH_ERROR
目录 1.Jenkins Build时的错误 2.百度文心快码AI智能体帮我解决 提问1:jenkins中如何配置npm的源 提问2:jenkins pipeline 类型为pipeline script from SCM时,如何配置npm源 3.最终解决方法-Jenkinsfile的修改 4.感触 1.Jenkins Build时…...
回归预测 | MATLAB实ELM-Adaboost多输入单输出回归预测
回归预测 | MATLAB实ELM-Adaboost多输入单输出回归预测 目录 回归预测 | MATLAB实ELM-Adaboost多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 一、极限学习机(ELM) 极限学习机是一种单层前馈神经网络,具有训练速…...
服务器漏洞修复解决方案
漏洞1、远程桌面授权服务启用检测【原理扫描】 Windows Remote Desktop Licensing Service is running: Get Server version: 0x60000604 1、解决方案:建议禁用相关服务避免目标被利用 方法一:使用服务管理器 打开“运行”对话框(WinR&am…...
Couldn‘t resolve host name for http://mirrorlist.centos.org
【问题】 在CentOS8执行sudo yum update -y 软件包更新的时候报错 Errors during downloading metadata for repository appstream:- Curl error (6): Couldnt resolve host name for http://mirrorlist.centos.org/?release8-stream&archx86_64&repoAppStream&…...
Vue2:el-table中的文字根据内容改变颜色
想要实现的效果如图,【级别】和【P】列的颜色根据文字内容变化 1、正常创建表格 <template><el-table:data="tableData"style="width: 100%"><el-table-column prop="id" label="ID"/> <el-table-column …...
C++静态变量的使用方法?C++静态变量占用内存情况?拷贝构造函数会拷贝哪些内容?const使用注意
1.静态变量的使用 函数中使用:静态变量初次声明并定义作为初始值,后续再次运行函数,基于上次的结果累加类中:类内声明,类外实现(如声明为const,特殊情况,可以类内直接声明时定义&am…...
Linux初识——基本指令
我们在linux下输入各种指令,其实就相当于在windows中的相关操作,比如双击,新建文件夹等。 以下是相关基本指令基本用法 一.ls(显示当前目录下的所有文件和目录) 那如何显示当前目录(我们所在的位置&…...
python 实现贪心算法(Greedy Algorithm)
贪心算法(Greedy Algorithm)是一种在每一步选择中都采取当前最优的选择,希望通过局部最优解达到全局最优解的算法设计方法。以下是使用Python实现贪心算法解决几个经典问题的示例: 1. 活动选择问题(Activity Selection…...
设计形成从业务特点到设计模式的关联
规范和指引在应用架构、数据架构等各架构方向上形成规范性约束指导。同一个决策要点、架构单元在统一的架构原则指导下,会因业务特点差异有不同的实现,经过总结形成了最佳实践。在开展新应用的设计时,根据决策要点以及相关的业务特点…...
Pytorch初学
创建虚拟环境 python控制台,jupyter notebook,python文件运行的差异,后续结合使用三者。 jupter主要可以对代码进行分割单独运行,主要做一些探索性工作。 数据集的常见存储模式 1、以标签命名图像。 2、单独存储图像的地址。 加载数据集…...
【动态重建】时间高斯分层的长体积视频
标题:Representing Long Volumetric Video with Temporal Gaussian Hierarchy 来源:浙江大学 链接:https://zju3dv.github.io/longvolcap/ 文章目录 摘要一、前言二、主要方法2.1 时间高斯分层2.2 高效渲染2.3 层次结构更新2.4 紧凑的外观模型…...
Java设计模式 —— 【行为型模式】命令模式(Command Pattern) 详解
文章目录 模式介绍优缺点适用场景结构案例实现注意事项 模式介绍 有时候需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是什么。此时希望用一种松耦合的方式来设计程序,使得请求发送者和请求接收者能够消除彼此…...
IOS开发如何从入门进阶到高级
针对iOS开发的学习,不同阶段应采取不同的学习方式,以实现高效提升.本文将iOS开发的学习分为入门、实战、进阶三个阶段,下面分别详细介绍. 一、学习社区 iOS开源中国社区 这个社区专注于iOS开发的开源项目分享与协作,汇集了大量开…...
数据结构与算法之二叉树: LeetCode 108. 将有序数组转换为二叉搜索树 (Ts版)
将有序数组转换为二叉搜索树 https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/description/ 描述 给你一个整数数组 nums ,其中元素已经按 升序 排列请你将其转换为一棵 平衡 二叉搜索树 示例 1 输入:nums [-10,-3,0,5,9…...
细说STM32F407单片机以轮询方式读写外部SRAM的方法
目录 一、实例的功能 二、工程配置 1、KEYLED 2、时钟、DEBUG、USART6、NVIC、GPIO、CodeGenerator 3、FSMC (1) 模式设置 (2) Bank 1子区3参数设置 1) NOR/PSRAM control组,子区控制参数 2) NOR/PSRAM timi…...
【Unity3D】AB包加密(AssetBundle加密)
加密前: 加密后,直接无法加载ab,所以无法正常看到ab内容。 using UnityEngine; using UnityEditor; using System.IO; public static class AssetBundleDemoTest {[MenuItem("Tools/打包!")]public static void Build(){//注意:St…...
wujie无界微前端框架初使用
先说一下项目需求:将单独的四套系统的登录操作统一放在一个入口页面进行登录,所有系统都使用的是vue3,(不要问我为啥会这样设计,产品说的客户要求) 1.主系统下载wujie 我全套都是vue3,所以直接…...
联发科MTK6771/MT6771安卓核心板规格参数介绍
MT6771,也被称为Helio P60,是联发科技(MediaTek)推出的一款中央处理器(CPU)芯片,可运行 android9.0 操作系统的 4G AI 安卓智能模块。MT6771芯片采用了12纳米工艺制造,拥有八个ARM Cortex-A73和Cortex-A53核心,主频分别…...
ZooKeeper Java API操作
(1)添加依赖,在pom.xml文件中添加zookeeper依赖: (2)连接zookeeper服务,创建cn.itcast.zookeeper包,在该包中创建ZooKeeperDemo类,该类用于实现创建会话和操作ZooKeeper&…...
【vue3封装element-plus的反馈组件el-drawer、el-dialog】
vue2中封装el-drawer、el-dialog这类反馈类子组件,需要将父组件的visible值传递子组件,并且再通过$emit将关闭弹窗的组件值传回父组件,同事子组件还需要监听父组件传递过来的visible的值,来驱动弹窗显示隐藏,很麻烦&am…...
doris:远程存储
功能简介 远程存储支持把部分数据放到外部存储(例如对象存储,HDFS)上,节省成本,不牺牲功能。 注意 远程存储的数据只有一个副本,数据可靠性依赖远程存储的数据可靠性,您需要保证远程存储有…...
win11 电脑重启后,需要重新插拔U盘、移动硬盘才能识别问题
win11 电脑重启后,需要重新插拔U盘、移动硬盘才能识别问题 前言 原因:win10在一个版本更新后,usb默认都开了自动停用 一、解决方式一 在设备管理里面找到那些需要插拔才能识别的usb设备,电源策略里关掉“允许计算机关闭这个设…...
望获实时Linux系统与大语言模型深度融合,开创实时智能无限可能!
大语言模型的崛起为智能化应用开辟了新的可能性。借助深度学习技术,这些模型能够理解和生成自然语言,处理复杂的文本和语义信息。这使得它们在诸如人机问答、内容生成和数据分析等领域展现出巨大的潜力。在实时控制领域,大语言模型能够显著提…...
【工业场景】用YOLOv8实现工业安全帽识别
工业安全帽识别是一项重要的工作安全管理措施,旨在防止工作场所发生头部伤害事故。通过使用YOLOv8等深度学习模型,可以实时准确地检测出工人是否佩戴安全帽,及时发现违规行为,为工人提供更安全的工作环境。 使用YOLOv8实现工业安全…...
137. 只出现一次的数字 II
137. 只出现一次的数字 II 题目-中等难度1. 位运算2. 位运算 题目-中等难度 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法且使用常数…...
Transformer 和 Attention机制入门
1. 什么是 Transformer 背景: 在自然语言处理领域,早期常使用循环神经网络(RNN)及其变体(如 LSTM、GRU)来处理序列数据,如机器翻译、文本生成等任务。然而,RNN 结构存在以下问题&…...
selenium合集
环境搭建步骤 安装selenium pip install selenium 安装浏览器 安装浏览器驱动 谷歌浏览器:chromdriver.exe ie浏览器:ieserverdriver.exe FireFox浏览器:geckodriver.exe 特别注意⚠️:下载驱动版本必须与浏览器版本一致 下载地址 淘宝镜像࿱…...
# Java 发送电子邮件示例
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默, 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把…...
数据结构-单链表
文章目录 一、单链表的概念及结构1.链表的概念2.链表的节点结构3.单链表增删查改操作的实现 一、单链表的概念及结构 1.链表的概念 🍉🍉概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中…...
软件工程期末整理(二)
快速原型开发模型是(适用于客户需求难以清楚定义、规模较小的系统)。(编写系统实施计划)不是系统设计阶段的主要活动 解释:系统实施计划”更侧重于后续的实施与部署阶段,属于项目管理层面的内容 协作性不属于构件的特性在类图中…...
【Python】基于blind-watermark库添加图片盲水印
blind-watermark 是一个用于在图像中添加和提取盲水印的 Python 库。盲水印是一种嵌入信息(如水印)到图像中的方法,使得水印在视觉上不可见,但在需要时可以通过特定的算法进行提取。以下是如何使用 blind-watermark 库来添加和提取…...