
Python
文章平均质量分 51
练习两年半的工程师
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
使用Gemini, LangChain, Gradio打造一个书籍推荐系统 (第五部分)
使用 LangChain 的 TextLoader 加载名为 “new_tagged_description.txt” 的文本文件,并将其转换成一个 Document 对象(或列表),每个 Document 通常有 .page_content 和 .metadata。”,这行代码提取出 ISBN。从图书数据中提取所有唯一的 simple_categories(如 Fiction、Nonfiction 等),加上默认选项 “All”,作为类别选择器的选项。原创 2025-06-10 01:53:14 · 650 阅读 · 0 评论 -
使用Gemini, LangChain, Gradio打造一个书籍推荐系统 (第四部分)
遍历我们定义好的情绪标签(emotion_labels),把每种情绪的最大分数添加到 emotion_scores 字典的相应列表中。lambda x: x[“label”] 是一个 匿名函数(lambda表达式),表示“取 x(每个字典)的 ‘label’ 值”。定义了一个函数,输入参数是 predictions(通常是一个列表,包含多段文本的情绪预测结果,每段是多个情绪及其分数的列表)。sorted() 是 Python 内置的 排序函数,用于对列表中的元素排序,返回一个新的排序后的列表。原创 2025-05-31 10:00:19 · 594 阅读 · 0 评论 -
使用Gemini, LangChain, Gradio打造一个书籍推荐系统 (第三部分)
value(简化类别):你希望把原始类别重新归类到更简单、更高层次的分类标签,例如 “Fiction”、“Nonfiction” 或 “Children’s Fiction”。如果 books[“simple_categories”] 是缺失值 (NaN),就用 books[“predicted_categories”] 填补。predicted_cats 会是一个长度为 300 的列表,存放模型预测的标签结果(可能是 “Fiction” 或 “Nonfiction”)。原创 2025-05-27 23:18:23 · 851 阅读 · 0 评论 -
使用Gemini, LangChain, Gradio打造一个书籍推荐系统 (第二部分)
导入了一些用于构建 文本嵌入式向量检索系统(Embedding-based Retrieval System) 的模块,结合了 LangChain、Chroma 向量数据库、以及 Google Vertex AI 的文本嵌入模型。从 LangChain 社区库 导入 TextLoader,用于从 .txt 文件中加载纯文本数据。功能:将本地文本文件加载为 LangChain 的 Document 对象导入 CharacterTextSplitter,是 LangChain 提供的一种 文本分割器。原创 2025-05-23 22:26:54 · 1046 阅读 · 0 评论 -
使用Gemini, LangChain, Gradio打造一个书籍推荐系统 (第一部分)
从 book_missing 数据集中筛选出简介(description)中包含 不少于 25 个单词 的图书记录,并保存到 book_missing_25_words 中。对 book_missing_25_words 数据框进行清理(删除一些不再需要的列),然后将结果保存为一个新的 CSV 文件 books_cleaned_new.csv。计算每本书的简介(description)中包含了多少个单词,并将结果保存到一个新列 words_in_description 中。原创 2025-05-21 22:11:08 · 1075 阅读 · 0 评论 -
量化自学 - 金融理论与python - Net Present Value 净现值
净现值(Net Present Value,NPV)是金融理论中用于评估投资项目价值的指标。其核心思想是将未来现金流按一定贴现率折算为当前价值,并减去初始投资成本。若NPV为正,表明项目预期收益高于成本,具有投资价值;反之则可能不值得投资。原创 2025-02-19 23:28:05 · 502 阅读 · 0 评论 -
LeetCode 73 Set Matrix Zeroes 题目解析和python代码
例如,上面这个matrix,我们发现 i = 1 and j = 1时, matrix[1][0] == 0,因此我们设置 matrix[1][1] = 0。接着 i = 1 and j = 2时,matrix[1][0] == 0,因此我们设置 matrix[1][2] = 0。接着 i = 2 and j = 1时,matrix[0][1] == 0,因此我们设置 matrix[2][1] = 0。例如,我们发现位置(1,1)的元素是0,我们就把位置(0,1)的元素和位置(1,0)的元素设置为0。原创 2024-10-08 15:23:51 · 565 阅读 · 0 评论 -
LeetCode 48 Rotate Image 解题思路和python代码
reverse矩阵中每一行的 time complexity 也是 O(n^2)。转置矩阵的 time complexity 是O(n^2),整体的 time complexity 是O(n^2)。接着,把 matrix 中的每一行都reverse。space complexity 是 O(1)。完成将 matrix 旋转90°。首先,转置这个matrix。原创 2024-10-08 11:15:15 · 657 阅读 · 0 评论 -
LeetCode 54 Spiral Matrix 解题思路和python代码
我们需要从外层到内层,遍历 matrix 中的每个元素。接着,从 matrix的最后一列,也就是最右边,从上到下,把元素添加进 result。然后,从 matrix的最后一行,也就是底部,从右到左,把元素添加进result。最后,从 matrix的第一列,也就是最左边,从下到上,把元素添加进result。从 matrix 的第一行,也就是顶部,从左到右,把元素添加进 result。bottom: 从 m-1 开始,指向 matrix 的最后一行。top: 从0开始,指向 matrix 的第一行。原创 2024-10-07 12:50:30 · 548 阅读 · 0 评论 -
LeetCode 209 Minimum Size Subarray Sum 题目解析和python代码
当这个和大于或等于 target 时,我们要开始缩短 subarray 的长度。于是我们开始移动 start 这个指针来缩小 window 的大小。通过不停的向右移动 start 指针,直到找到最短的 subarray 的长度。向右移动 end 指针来提高 window 的大小,每一次移动指针都把 nums[end] 添加到现在的和。我们可以使用两个 pointers,一个是 start 一个是 end,两个指针都从array的开头开始。这里我们可以使用 sliding window 的技巧。原创 2024-10-07 12:04:03 · 761 阅读 · 0 评论 -
LeetCode 11 Container with Most Water 解题思路和python代码
我们可以看到这里水的体积多少取决于两边的竖直线中较短的那一条。我们可以使用两个指针,一个指向数组的第一个数,另一个指向数组的第二个数。我们可以计算面积,同时移动两个指针中,指向较短竖直线的那一个。Space Complexity 是 O(1)Time Complexity 是 O(n)原创 2024-10-07 11:40:27 · 661 阅读 · 0 评论 -
LeetCode 228 Summary Ranges 解题思路和python代码
遍历数组中的每一个元素,如果当前元素 nums[i] 与前一个元素 nums[i-1] 不连续,那么我们将范围 [start, nums[i-1]] 添加到结果中,并更新 start 为当前元素 nums[i]。time complexity为O(n)。我们从数组第一个数字开始,初始化一个变量。遍历结束后,将最后一个范围添加到结果中。注意,使用python3。表示当前范围的起始值。原创 2024-10-06 20:57:13 · 596 阅读 · 0 评论 -
LeetCode 15 3Sum 解题思路和python代码
检查左指针指向的数(-1)是否与下一个数(0)相等,如果相等,就要跳过重复的左指针元素;同样道理,检查右指针指向的数(2)是否与前一个数(1)相等,如果相等,就跳过重复的右指针元素。左指针从 i+1 开始,右指针从数组末尾开始,逐步向中间收缩。,将它作为第一个数,然后使用双指针方法在 i 之后的数组部分寻找另外两个数,使它们的和等于0。和还是小于0,说明左指针太小,向右移动左指针。和还是小于0,说明左指针太小,向右移动左指针。和小于0,说明左指针太小,向右移动左指针。左指针大于右指针,遍历结束。原创 2024-10-06 17:09:53 · 1192 阅读 · 0 评论 -
LeetCode 151 Reverse Words in a String 解题思路和python代码
将string按空格分割成一个单词list。最后,将反转后的单词list用空格连接起来。接着,反转单词list。首先,去掉前后空格。,先去掉前后空格得到。原创 2024-10-06 15:07:26 · 1034 阅读 · 0 评论 -
LeetCode 189. Rotate Array 解题思路和python代码
我们的思路是先将整个array进行reverse,再将前k个进行reverse,最后将剩余的进行reverse。reverse前3个elements,[5, 6, 7, 4, 3, 2, 1]。reverse剩余的elements,[5, 6, 7, 1, 2, 3, 4]。例如,nums = [1, 2, 3, 4, 5, 6, 7]和k = 3。reverse整个array,[7, 6, 5, 4, 3, 2, 1]。题目要求将array向右rotate k步。原创 2024-10-06 14:52:46 · 542 阅读 · 0 评论 -
LeetCode 134 Gas Station 解题思路和python代码
使用贪婪算法找到这个能跑完一圈的起始油站。通过记录现有的油量 current gas,如果一个油站的现有油量小于0,那么我们一定不可能继续跑完一整圈。所以我们把下一个油站假设为起始点,重设 current gas为0,再作检查。这道题目中,我们已知每个油站可以获得的油量,以及前往下一个油站的油耗,我们需要判断是否有一个油站可以作为起始点,让车子有足够的油耗遍历每个油站,跑完一整圈。如果所有油站的油量总和要小于油耗的总和,车子一定跑不完一圈,返回 -1。首先,检查是否所有油站的油量总和要大于油耗的总和。原创 2024-10-06 13:33:13 · 919 阅读 · 0 评论 -
LeetCode 26 Remove Duplicates from Sorted Array 解题思路和python代码
第一个指针 k 记录现在有多少个unique element,并且记录这个unique element将放在nums的哪一个位置。第二个指针 i 记录现在遍历的nums的位置,检查现在这个element与它前一个element是否相等。nums做的是in-place的修改,前k个数包含的都是unique element。使用两个指针来记录。原创 2024-10-06 13:06:38 · 759 阅读 · 0 评论 -
LeetCode 69. Sqrt(x) 解题思路和python代码
如果mid的2次方要大于x,证明应该向左移动mid,去找更小的数,将high更新为mid-1。如果mid的2次方要小于x,证明应该向右移动mid,去找更大的数,将low更新为mid+1。从[0, x]这个范围开始做binary search,首先检查中间点mid。输入的是一个非负数x,需要返还x的开平方,并且需要是一个向下约的整数。这个解决方案的time complexity是O(log x)。我们可以使用binary search去完成这个题目。如果mid的2次方是x,那么mid就正好是x的开平方。原创 2024-10-06 11:58:57 · 580 阅读 · 0 评论 -
LeetCode 27 remove element
【代码】LeetCode 27 remove element。原创 2024-10-03 23:42:25 · 703 阅读 · 0 评论 -
使用Alpha Vantage API和Python进行金融数据分析
Alpha Vantage通过一套强大且开发者友好的数据API和电子表格,提供实时和历史的金融市场数据。从传统资产类别(例如股票、ETF、共同基金)到经济指标,从外汇汇率到大宗商品,从基本数据到技术指标,Alpha Vantage通过基于云的API提供服务。原创 2023-12-18 15:01:47 · 10357 阅读 · 3 评论 -
卫星图像应用 - 洪水检测 使用DALI进行数据预处理
columns=4rows=1# 窗口的宽度是固定的,而高度根据列数和行数来自动计算,以确保图像按照指定的布局显示。使用 gridspec.GridSpec 创建一个子图的网格布局。使用 plt.subplot 创建一个子图,并根据 gs 中的索引 idx 来选择子图的位置。plt.imshow 显示图像,其中 image_batch.at(idx) 表示从图像批次中获取第 idx 张图像并在子图中显示。原创 2023-09-30 20:55:56 · 436 阅读 · 0 评论 -
遥感图像应用:在低分辨率图像上实现洪水损害检测(迁移学习)
with torch.no_grad(): # 禁止梯度计算,因为在准确率计算中不需要梯度信息else:else:训练深度学习模型的函数。参数:model: 要训练的深度学习模型criterion: 损失函数optimizer: 优化器acc: 准确率计算函数xtrain: 训练数据ytrain: 训练标签xval: 验证数据yval: 验证标签save_file_name: 保存训练后模型权重的文件名n_epochs: 训练的总轮数(epochs)原创 2023-09-06 16:33:21 · 775 阅读 · 1 评论 -
遥感图像应用:在低分辨率图像上实现洪水损害检测
Pytochimport torchvision.transforms as transforms # 提供了各种用于预处理图像的转换函数from sklearn.metrics import accuracy_score # 计算模型的准确率self.conv1 = nn.Conv2d(3, 32, kernel_size = 3, stride = 1, padding = 1) # 输入通道数为3(RGB图像),输出通道数为32,使用3x3的卷积核,步幅为1,填充为1。原创 2023-09-06 12:15:28 · 406 阅读 · 0 评论 -
Python自学:使用多进程处理 multiprocessing
以下代码没有使用多进程。原创 2023-09-04 15:38:13 · 620 阅读 · 0 评论 -
Python 自学:使用线程模块同时运行代码 Threading
【代码】Python 自学:使用线程模块同时运行代码 Threading。原创 2023-09-04 11:59:04 · 160 阅读 · 0 评论 -
Python 面试:单元测试unit testing & 使用pytest
【代码】Python 面试:单元测试unit testing。原创 2023-08-30 16:02:58 · 1390 阅读 · 0 评论 -
Python自学:异步Asynchronous
以下代码主要包含两个函数,main()和other_function()。main()函数先打印“A”,然后睡眠1秒,在它睡眠的同时,执行other_function()函数,打印“1”。然后other_function()函数睡眠2秒,在它睡眠的同时,执行main()函数,打印“B”。最后执行other_function()函数,打印“2”。import asyncioasync def main(): task = asyncio.create_task(other_function())原创 2023-08-30 10:29:04 · 203 阅读 · 0 评论 -
Python面试:使用Cython提升代码运行速度
成功后会生成两个文档“main.cp310-win_amd64.pyd”和“main.c”原创 2023-08-29 18:17:48 · 149 阅读 · 0 评论 -
python面试:使用cProfile剖析程序性能
我们可以看到,这个程序中最耗时的函数是waste_time(),用了约5s。其次是do_stuff(),用了3.8s。原创 2023-08-29 15:52:35 · 428 阅读 · 0 评论 -
Python面试:什么是GIL
可见需要多个字节码操作,有可能在线程执行过程中切到其他线程。“STORE_SUBSCR”,可见只有单节字码操作。原创 2023-08-29 14:37:06 · 419 阅读 · 0 评论 -
Python 面试:异常处理机制
格式:原创 2023-08-29 11:58:51 · 409 阅读 · 0 评论 -
Python 面试:可变类型和不可变类型作为函数参数,关键字参数
每次执行函数,会建立一个不可变对象的副本,因此参数每次指向一个新的不可变对象的地址。参数会指向可变对象的副本的地址,每次修改的是同一个对象。**kwargs被打包成dict。*args被打包成tuple。原创 2023-08-29 11:03:06 · 487 阅读 · 0 评论 -
Python网络编程自学:如何使用Socket
同时执行server.py和client.py。文件:server.py。文件:client.py。原创 2023-08-28 23:37:00 · 230 阅读 · 0 评论 -
Python面试:文件读写的异常处理
如果文件不存在,捕获异常,建立文件并写入内容。如果文件存在,读取文件内容并打印。原创 2023-08-28 15:05:29 · 119 阅读 · 0 评论 -
Python面试:复制一个文件
【代码】Python面试:复制一个文件。原创 2023-08-28 14:52:24 · 86 阅读 · 0 评论 -
Python面试准备:利用装饰器装饰函数,改为需要用户名和密码登入才能使用函数
【代码】Python面试准备:利用装饰器装饰函数,改为需要用户名和密码登入才能使用函数。原创 2023-08-28 12:46:50 · 169 阅读 · 0 评论 -
Python面试准备:遍历某目录下的所有文件
【代码】Python面试准备:遍历某目录下的所有文件。原创 2023-08-28 12:32:12 · 119 阅读 · 0 评论 -
使用LSTM模型进行股票价格预测
我们在for loop的第一步,将数据集的前60个数据作为training data的第一组数据,并将第61个数据作为对应的y。这里我们把window size设定为60,model会用60天的数据来预测第61天的数据。还是一样,先将test数据转换成numpy array,再改变数据的shape,令它可以被输入到model中。下一步我们把数据类型转换为numpy array,并改变数据的shape,令它符合LSTM模型的输入要求。我们可以使用一支股票最后60天的数据来预测未来一天的股价。原创 2023-07-02 22:51:18 · 3450 阅读 · 3 评论 -
使用gdown下载google drive数据集
Download a large file from Google Drive.原创 2023-06-06 17:48:52 · 1832 阅读 · 0 评论 -
DBSCAN聚类算法的Python可视化
DBSCAN聚类算法的Python可视化原创 2022-12-07 02:29:37 · 2553 阅读 · 1 评论