20个Python进阶技巧

Virbox Protector:全方位守护 Android 应用安全 在数字化浪潮中,Android 应用面临着诸多安全挑战,如破解、篡改、盗版、数据窃取和钓鱼欺诈等。为了应对这些复杂的安全问题,Virbox Protector 应运而生,为 Android 应用提供高强度的专业化安全保护,支持对 APK 和 AAB 文件的加固保护,并兼容 Google Play,助力应用顺利出海。 阅读详情

20个Python进阶技巧

本来是在查资料,无意间看到了这个知乎文章,感觉内容值得学习,但是排版实在难受,代码和注释混在一起,没有换行,同时解释也很奇怪(感觉是机翻的),当我无法忍受想关闭网页的时候,发现这篇文章是翻译自Medium的文章,但是原文章是英语写的,为了帮到那些英语不太好的Python学习者,同时方便自己之后看,于是写了这篇博文(算是笔记吧)

基于Medium的文章 《20 Python Snippets You Should Learn Today》 ,除了翻译外添加了自己的解释。水平有限,如果有错误欢迎读者指正。

大部分示例代码均引用自 Medium 《20 Python Snippets You Should Learn Today》

也欢迎来我的博客查看本文章。

1 反转字符串

下面的代码使用Python切片操作来反转字符串。

# Reversing a string using slicing

my_string = "ABCDE"
reversed_string = my_string[::-1]

print(reversed_string)

# Output
# EDCBA

注意:光理论是不够的,在此送大家一套2020最新Python全栈实战视频教程,点击此处 进来获取 跟着练习下,希望大家一起进步哦!

这里用到的是Python切片

切片某种意义上就是对如下代码的书写进行了简化(不考虑Python中-1的情况)

// [a:b:c]
for (int i = a, i < b; i = i + c) {
    // do something
}

推荐阅读: 《How to reverse a string in Python?》

2 转化为标题(首字母大写)

下面的代码把字符串转化为标题格式。这里用了字符串类的title()方法来实现。

my_string = "my name is chaitanya baweja"

# using the title() function of string class
new_string = my_string.title()

print(new_string)

# Output
# My Name Is Chaitanya Baweja

把字符串中单词的首字母都大写,转变为标题格式,就是调用了字符串类的title()方法,很简单,不需要解释。

值得一提的是,虽然叫 title, 但是它是完全不加判断地把所有单词的首字母大写,并没有遵循英语的语法规则。

英文标题首字母大写规则

按照规则的优先级从高到底应该是:

  1. 标题的第一个单词的首字母要大写;
  2. 冠词都不需要大写;
  3. 字母个数多于3个(不含3个)的介词、连词的首字母要大写;
  4. 名词、动词、形容词、副词、代词、感叹词首字母应大写;
  5. 大写所有英语中要求大写的单词。如月份、人名、地名等等。

根据优先级递减的规则,如果后面的规则与前面的规则冲突,则优先执行前面的规则。

来源: https://www.cnblogs.com/crackpotisback/p/5547249.html

test_str = "the story of an magical apple and me"
title_str = test_str.title()
print(title_str)

# Output
# The Story Of An Magical Apple And Me

另外,函数只识别空格分割的单词

my_string = "helloworld"
new_string = my_string.title()
print(new_string)

# Output
# Helloworld

3 查找字符串的唯一元素

下面的代码可以用于查找字符串中所有的唯一元素,我们利用了集合内元素的唯一性。

my_string = "aavvccccddddeee"

# converting the string to a set
temp_set = set(my_string)

# stitching set into a string using join
new_string = ''.join(temp_set)

print(new_string)

# Output
# ecdva

效果是把字符串中用到的字符都提取出来,构成一个新的字符串。

比如对 hello ,它内部包含 h, e, l, o 这几四字符,于是我们就会得到一个由这四个字符构成的新字符串,顺序通常是乱的,比如 oelh 就是一种可能的结果。

输出结果并没有排序,是随机的,比如你期望如下代码返回abcdefghijklmnopqrstuvwxyz .,但是结果却是杂乱的。

my_string = "the quick brown fox jumps over the lazy dog."
temp_set = set(my_string)
new_string = ''.join(temp_set)
print(new_string)

# Output
# trzixup.efbajovcdnslywhg qmk

这里用到了python中的 集合 和 join()方法

首先利用集合的唯一性,用原始字符串构造一个集合,然后利用join()方法把集合内的元素用空字符串进行连接,相当于将集合内的元素连接成字符串。

推荐阅读: 《An Introduction to Python Sets - Part I》

4 输出 n次字符串或列表

你可以对字符串或列表使用乘法(*)。这让我们可以按照我们的需求输出多次。

n = 3 # number of repetitions

my_string = "abcd"
my_list = [1,2,3]

print(my_string*n)
# abcdabcdabcd

print(my_list*n)
# [1,2,3,1,2,3,1,2,3]

关于这个内容的一个有趣的用例是定义一个具有恒定值的列表——假设为零。

n = 4
my_list = [0]*n # n denotes the length of the required list
# [0, 0, 0, 0]

乘法的特殊用法,没什么需要解释的。

5 列表解析

列表解析为创建列表提供了一种可以以其他列表为基础来创建新的列表的优雅方式。

下面的代码通过把旧列表中的每个元素都乘以2来创建新列表。

# Multiplying each element in a list by 2

original_list = [1,2,3,4]

new_list = [2*x for x in original_list]

print(new_list)
# [2,4,6,8]

推荐阅读: 《List Comprehensions in Python》

6 交换俩个变量的值

Python使得交换俩个变量的值变得十分简单,并不需要使用另一个变量。

a = 1
b = 2

a, b = b, a

print(a) # 2
print(b) # 1

很简单,不需要解释。

7 把字符串分解为子字符串列表

我们可以通过字符串类的 split() 方法来把字符串分解成子字符串列表。你同样可以传递一个参数来决定用什么字符进行分割。

string_1 = "My name is Chaitanya Baweja"
string_2 = "sample/ string 2"

# default separator ' '
print(string_1.split())
# ['My', 'name', 'is', 'Chaitanya', 'Baweja']

# defining separator as '/'
print(string_2.split('/'))
# ['sample', ' string 2']

这里使用了 split()方法 不多解释了。

8 将字符串列表组合成单字符串

join()方法可以通过传入的参数作为间隔把字符串数组组合成单字符串。

在本例中。我们使用逗号作为分割符。

list_of_strings = ['My', 'name', 'is', 'Chaitanya', 'Baweja']

# Using join with the comma separator
print(','.join(list_of_strings))

# Output
# My,name,is,Chaitanya,Baweja

使用了 join()方法 ,不多解释了。

9 检查给定字符串是否为回文(Palindrome)

我们已经讨论了如何反转字符串,因此,在Python中,回文检查变得很简单。

my_string = "abcba"

if my_string == my_string[::-1]:
    print("palindrome")
else:
    print("not palindrome")

# Output
# palindrome

10 列表中元素出现的次数

有很多的方法来做这件事,但是我最喜欢的方法是使用Python中的 Counter 类。

Python的 Counter 会记录容器内每个元素的出现次数。Counter() 返回一个字典,字典内以元素为键,出现次数为值。

同样的,我们可以使用函数 most_common() 来获得列表中出现次数最多的元素。

# finding frequency of each element in a list
from collections import Counter

my_list = ['a','a','b','b','b','c','d','d','d','d','d']
count = Counter(my_list) # defining a counter object

print(count) # Of all elements
# Counter({'d': 5, 'b': 3, 'a': 2, 'c': 1})

print(count['b']) # of individual element
# 3

print(count.most_common(1)) # most frequent element
# [('d', 5)]

使用列表作为参数构建Counter类,返回值即为所需内容。

推荐阅读:《An Introduction to Python Counter》

11 判断俩个字符串是否为易位词

Counter的一个有趣的应用是判断易位词。

如果一个单词或者短语是由另一个单词或短语重新排序构成的,那么这个俩单词或者短语就被称为易位词。(百科词条可能会帮到你)

易位构词游戏的英文词汇是 anagram,这个词来源于有“反向”或“再次”的含义的希腊语字根ana-和有“书写”、“写下”的意思的词根gramma。易位构词是一类文字游戏(更准确地说是一类“词语游戏”),是将组成一个词或短句的字母重新排列顺序,原文中所有字母的每次出现都被使用一次,这样构造出另外一些新的词或短句。

来源: 中文维基 易位构词游戏

推荐阅读:百度百科 易位词 English wiki Anagram

如果俩个字符串的Counter对象是相同的,那么他们是易位词。

from collections import Counter

str_1, str_2, str_3 = "acbde", "abced", "abcda"
cnt_1, cnt_2, cnt_3  = Counter(str_1), Counter(str_2), Counter(str_3)

if cnt_1 == cnt_2:
    print('1 and 2 anagram')
if cnt_1 == cnt_3:
    print('1 and 3 anagram')

# Output
# 1 and 2 anagram

12 使用 try-except-else

在python中,通过使用try/except代码块可以简单地处理错误。在这个代码块中添加else可能是有用的。

如果没有错误发生的话,else后的代码就会被执行。

如果你有一些不管错误是否发生都需要执行的代码,使用finally。

a, b = 1,0

try:
    print(a/b)
    # exception raised when b is 0
except ZeroDivisionError:
    print("division by zero")
else:
    print("no exceptions raised")
finally:
    print("Run this always")
    
# Output
# division by zero
# Run this always
try:
   some_dangerous_operation()
   # something may cause exception
except:
   exception_handle()
   # something run when the exception happens
else:
   no_exception()
   # something run when no exception happens
finally:
   something_must_to_been_done()
   # something run weather the exception happens or not

13 使用Enumerate来取得 索引-值 对

下面的脚本使用了Enumerate来迭代列表中的值及其索引。

my_list = ['a', 'b', 'c', 'd', 'e']

for index, value in enumerate(my_list):
    print('{0}: {1}'.format(index, value))

# 0: a
# 1: b
# 2: c
# 3: d
# 4: e

推荐阅读: 菜鸟教程 enumerate() 函数

14 检查对象的内存使用

下面的脚本可以用于检查对象的内存使用。

在这里阅读更多: 这里

import sys

num = 21

print(sys.getsizeof(num))

# In Python 2, 24
# In Python 3, 28

15 合并俩个字典

在Python 2,我们使用 update() 方法来合并俩个字典。

Python 3.5 简化了这个过程。

在下面的脚本中,俩个字典被合并。为了防止交叉的情况,使用第二个字典的值。

dict_1 = {'apple': 9, 'banana': 6}
dict_2 = {'banana': 4, 'orange': 8}

combined_dict = {**dict_1, **dict_2}

print(combined_dict)
# Output
# {'apple': 9, 'banana': 4, 'orange': 8}

16 执行一段代码所需时间

下面的代码使用time库计算运行一段代码所需要的时间。

import time

start_time = time.time()
# Code to check follows
a, b = 1,2
c = a+ b
# Code to check ends
end_time = time.time()
time_taken_in_micro = (end_time- start_time)*(10**6)

print(" Time taken in micro_seconds: {0} ms").format(time_taken_in_micro)

17 嵌套列表扁平化

有时,你并不清楚你的列表的嵌套深度,并且你仅仅只是想要让所有元素变成一个扁平的列表。

这个代码告诉你如何实现!

from iteration_utilities import deepflatten

# if you only have one depth nested_list, use this
def flatten(l):
  return [item for sublist in l for item in sublist]

l = [[1,2,3],[3]]
print(flatten(l))
# [1, 2, 3, 3]

# if you don't know how deep the list is nested
l = [[1,2,3],[4,[5],[6,7]],[8,[9,[10]]]]

print(list(deepflatten(l, depth=3)))
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

如果你有一个正确格式化的数组, Numpy flatten 可能是一个更好的选择。

18 列表取样

下面的代码生使用 random 库从给定的列表中生成了n个随机的样本。

import random

my_list = ['a', 'b', 'c', 'd', 'e']
num_samples = 2

samples = random.sample(my_list,num_samples)
print(samples)
# [ 'a', 'e'] this will have any 2 random values

我十分推荐使用 secrets 库来生成用于加密的随机样本。

下面的代码只能在python 3运行。

import secrets                              # imports secure module.
secure_random = secrets.SystemRandom()      # creates a secure random object.

my_list = ['a','b','c','d','e']
num_samples = 2

samples = secure_random.sample(my_list, num_samples)

print(samples)
# [ 'e', 'd'] this will have any 2 random values

19 数字化

下面的代码将会把一个整数转化成数字的列表。

num = 123456

# using map
list_of_digits = list(map(int, str(num)))

print(list_of_digits)
# [1, 2, 3, 4, 5, 6]

# using list comprehension
list_of_digits = [int(x) for x in str(num)]

print(list_of_digits)
# [1, 2, 3, 4, 5, 6]

20 检查唯一性

下面的函数会检查一个列表内的所有元素是否是唯一的。

def unique(l):
    if len(l)==len(set(l)):
        print("All elements are unique")
    else:
        print("List has duplicates")

unique([1,2,3,4])
# All elements are unique

unique([1,1,2,3])
# List has duplicates

这里利用了集合的唯一性。

注意:最后送大家一套2020最新企业Pyhon项目实战视频教程,点击此处 进来获取 跟着练习下,希望大家一起进步哦!

总结

不得不说对于计算机学习来说,英语还是很重要的,很多资料都是英语的。

推荐阅读: 30 seconds of python

YOLOv11改进 | 引入SFSConv空间频率选择卷积(含SFSC3k2二次创新),空间频率特征协同作用,检测性能全面提升 本文提出在YOLOv11中引入SFSConv空间频率选择卷积模块,通过显式分离和动态融合空间域与频率域特征,解决传统卷积对多尺度目标检测的局限性。SFSConv包含空间频率分离、动态权重融合和协同特征重建三个核心机制,并进一步创新提出SFSC3k2结构,通过双路频率分支增强特征协同作用。该改进显著提升了YOLOv11在遥感、医学等多尺度复杂场景下的检测性能,实验显示在微小目标检测任务中mAP提升5%-10%。代码实现展示了SFSConv模块的核心逻辑及其在PyTorch中的高效实现。 阅读详情

相关推荐

使用 VPN 访问太理内部网相关问题总结【太原理工大学】

电脑连接 VPN,访问校园内部网相关问题总结,太原理工大学。

m0_52861684的博客 9884

Python进阶教程

了解不同的数据序列化格式,如JSON、XML和Protocol Buffers,并学习如何在Python中进行序列化和反序列化。下面是一个示例,展示如何使用Python的。可以进一步学习文件路径操作和文件系统的其他相关操作,如文件夹的创建、文件权限的设置和文件备份等。学习使用更高级的测试框架和工具,如pytest和Coverage,以提高测试代码的效率和质量。下面是一个示例,展示如何使用Python的。学习使用更高级的网络编程库和框架,如Twisted和Flask,以简化网络应用的开发。

大白的博客 3404

CTF-MISC:BUUCTF练习汇总(1-25题,不包括签到题)

解题思路:该题比较基础,wireshark打开过滤HTTP流量包,追踪HTTP流后可以看到base64密文,解密后得到jpg图片,打开图片即可看到flag,在线OCR识别即可提取出flag值。解题思路:zip压缩包解压需要密码,图片中的盲文为解压的密码,解压后得到MP3音频文件,内容为典型的摩斯密码;解题思路:由题目可以为LSB隐写,使用StegSolve打开图片查看最低有效位得到PNG信息,另存为图片后发现是二维码,扫描后即可得到flag。对应摩斯电码为:-.-. - …-. .-- .–. . …

燕麦葡萄干的博客 1万+

Python进阶

简单来说字符集就是一套文字符号及其编码的描述。从20世纪60年代美国标准化组织ANSI发布了第一个计算机字符集ASCII开始,为了处理不同的文字,各大计算机公司,各国政府,以及各种标准化组织发明了几百种字符集,例如我们熟悉的:ASUII、USC、GBK、BIG5…这些不同的字符集从收录到编码都各不相同,给软件的移植和信息的交换带来了很大的困惑。最严重的问题就是字符乱码,这也是到现在为止还影响着每个测试和开发人员的根本问题(1)、开个QQ,开了一个进程;开了迅雷,开了一个进程。

qq_45138120的博客 3724

RunHarmony报错解析:如何解决data.use与cell.embeddings维度不匹配问题

本文深入解析了单细胞数据分析中RunHarmony函数报错'non-conformable arguments'的根源,即data.use与cell.embeddings矩阵维度不匹配。核心原因是assay(如RNA与integrated)错配导致细胞ID或数量不一致。文章提供了三种解决方案:最推荐显式指定assay.use参数,也可设置project.dim=FALSE或统一数据环境,并给出了最佳实践指南以避免此类错误。

weixin_29093017的博客 577

避坑指南:Qwen2.5-VL图片预处理中常见的5个尺寸错误

本文深入解析了Qwen2.5-VL模型在图片预处理环节中开发者最常遇到的五个尺寸错误,包括动态分辨率对齐、宽高比超标、像素数限制等问题。文章结合源码解读,详细剖析了`process_vision_info`函数和`resize`逻辑,并提供了具体的排查流程图与参数设置建议,旨在帮助开发者构建健壮的预处理流水线,有效规避显存溢出与推理失败的风险。

weixin_29290379的博客 178

python大神的成长之路_菜鸟程序员的成长之路: Python四大进阶攻略

随着人工智能的发展与应用,Python编程语言受到世界各界人士的关注,编程圈金句从“人生苦短,我学Python”转变成了“学完 Python,可以上天”,Python工程师也成为一个热门职业,就业薪资高,发展前景广阔。小编有个在阿里工作的朋友,这两天和他在聊Python的发展,其实Python已经在不知不觉中发生了非常大的改变。Python这门语言十分高效,只要是和自动化有关系的,它可以发挥出巨大...

weixin_39833290的博客 643

Linux命令行入门:从零掌握服务器运维与Shell脚本基础

在信息化时代,操作系统是数字世界的基石,而终端命令行则是高效驾驭服务器的核心技能。无论是软件部署、服务监控还是故障排查,掌握基于Shell的指令操作都能大幅提升工程效率。从最基础的文件目录管理、文本处理,到权限控制、进程监控与网络调试,命令行提供了一套强大且可自动化的操作范式。尤其对于运维工程师和开发者而言,理解管道、重定向以及脚本化任务,意味着将重复劳动转化为可复用的自动化流程。本文从环境准备讲起,系统梳理常用Linux命令的实际场景与输出验证,并延伸至Shell脚本编写与定时任务,帮助初学者快速建立从操

weixin_30522983的博客 257

超长干货!!Python如何从进阶到高级

Python 进阶是我一直很想写的,作为自己学习的记录,过去自己在看一些代码的时候经常会困惑,看不懂,然后自己去查资料、看书籍,慢慢的一个个弄懂,经常沉浸其中。关于 Python 高级语法的资料、书籍不少,详细是详细,但是总感觉写的太复杂,学习有难度,而且不能使人印象深刻。TLDR” 是流行的互联网行话,意思是“太长不读( to long didn’t read )”。

xiaolinyui的博客 4625

MATLAB锂离子电池伪二维(P2D)模型实现

锂离子电池伪二维(P2D)模型的MATLAB实现。该模型基于Newman等人提出的经典电化学模型,考虑了固液相扩散、电荷守恒和电化学反应动力学。

hie98894的博客 1932

基于YOLOv8的工业瓷砖缺陷检测:深度学习与UI界面的应用

本文详细介绍了如何使用YOLOv8进行工业瓷砖缺陷检测,并结合图形用户界面(UI)提供了完整的实现方案。通过YOLOv8模型,我们可以高效、精确地检测瓷砖图像中的缺陷,显著提高生产过程中的质量控制水平。随着数据集的进一步扩展和YOLOv8模型的不断优化,未来瓷砖缺陷检测的精度和速度将不断提高。此外,基于深度学习的缺陷检测技术不仅可以应用于瓷砖生产,还可以推广到其他领域的质量检测中。

YOLO 604

Python进阶常用技巧:提升开发效率的20个实用方法

Python作为一门简洁高效的编程语言,在数据科学、Web开发、自动化运维等领域广泛应用。本文总结了20个Python进阶常用技巧,帮助开发者提升代码质量、优化性能并提高开发效率。这些技巧涵盖语法糖、性能优化、调试技巧等多个方面,适合有一定Python基础的开发者阅读。本文介绍了20个Python进阶常用技巧,涵盖了数据处理、函数式编程、性能优化、调试技巧等多个方面。4.1 使用f-string调试(Python 3.8+)1.3 字典合并与解包(Python 3.5+)3.1 使用局部变量加速访问。

Python_trys的博客 1350

YOLOv8【第十章:多任务扩展深度篇·第1节】YOLOv8-Seg 实例分割:Mask原型生成与系数预测原理解析!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 1812

Python下载实战:从基础到进阶的20个技巧

【代码】Python下载实战:从基础到进阶的20个技巧。

m0_46663171的博客 150

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Python练习(10)Python内置函数进阶:20道实战题解锁高效编程技巧(中)

本文精选7个Python内置函数实战案例,涵盖电商筛选、金融计算、数据排序等业务场景。通过any()/all()实现多条件商品过滤,利用decimal模块处理高精度金融计算,使用sorted()完成混合数据类型排序。还包括API参数校验、内存分析优化、多语言文本处理等实用技巧,每个案例均提供代码实现和深度解析,帮助开发者掌握Python内置函数的进阶用法,提升代码效率与质量。适合有一定Python基础的开发者学习参考。

优快云博客专家,领域包括但不限于:AI、大数据、Python、架构师,有合作、课程、问题、疑惑请私信博主 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Python for循环变量进阶玩法:拆解ICode竞赛20道题,掌握变量在表达式里的计算技巧

本文深入解析Python for循环变量在ICode编程竞赛中的高级应用,通过拆解20道典型题目,详细讲解变量在表达式中的四种核心计算模式、逆向推导循环设计的三步法,以及避免常见错误的实用技巧。帮助开发者掌握循环变量动态参与运算的高级玩法,提升编程竞赛解题效率。

weixin_30480075的博客 392

20、Python字符串操作进阶:str()与replace()高效技巧、字符提取及内存分析实战

Python字符串操作精要指南 1️⃣ 字符串替换:replace()创建新对象而非修改原字符串(石刻文字类比) 2️⃣ 类型转换:str()将数字/布尔值转为字符串(收银小票案例演示) 3️⃣ 字符提取:通过[index]实现正反向索引(学生姓名首字母提取实例) 4️⃣ 实践任务:包含商品信息更新和学籍卡生成两个场景化练习 👉 特别提示:所有字符串操作均遵循不可变性原则,实际创建新对象 (字数:147字)

日拱一卒的星际旅人 | 在「代码星球」见证从菜鸟到极客的蜕变。 1172

1行Python搞定高频任务!26个实用技巧解决日常+进阶需求

本文分享26个Python极简代码技巧,分日常任务(20个)和进阶技巧(6个),含具体代码及通俗解释。覆盖列表处理、字符串操作、错误处理等需求,帮读者用简洁代码解决问题,提升编码效率。

906

一段简单的python程序,简单的python程序编写

大家好,小编为大家解答一段简单的python程序的问题。很多人还不知道简单的python程序编写,现在让我们一起来看看吧!当今python编程语言的潮流已经成为不可阻挡的趋势,python以其较高的可读性和简洁性备受程序员的喜爱。而python编程中的一些小的技巧,运用的恰当,会让你的程序事半功倍。字符串的翻转,首先最简单的方法就是利用切片的操作,来实现翻转,其次可以利用reduce函数来实现翻转,在python3中,reduce函数需要从functools中进行导入。

Fixf4556的博客 653

python保留字符的用途_你必须掌握的20个python代码,短小精悍,用处无穷

原标题:你必须掌握的20个python代码,短小精悍,用处无穷当今python编程语言的潮流已经成为不可阻挡的趋势,python以其较高的可读性和简洁性备受程序员的喜爱。而python编程中的一些小的技巧,运用的恰当,会让你的程序事半功倍。以下的20个小的程序段,看似非常的简单,但是却非常的有技巧性,并且对个人的编程能力是一个很好的检验,大家应该在日常的编程中多多使用,多多练习。1.字符串的翻转 ...

weixin_39630247的博客 104

Python新手教程之while循环20例

在Python中,有两种类型的循环:while循环和for循环。在本文中,我们将专注于while循环并提供20个实用示例,帮助您了解while循环的基本概念和用法。在Python中,循环中的else语句与if语句中的else语句相似。在本文中,我们介绍了Python中的while循环及其用法,并提供了20个实用示例。条件成立,执行语句块内容,拆解i的个位百位数,在用if语句判断是否成立,成立就输出i;4、重复上面的操作,直到i=1000时,条件不成立,直接跳出while循环,运行while下面的语句。

Oona_01的博客 243

精选30个Python列表和字典的进阶用法

以下是列表和字典的一些进阶功能片段,整理为清晰的图片版,希望大家能更方便的阅读,并从中获得一些帮助。1 链式比较2 不用else和if实现计算器3 函数链4 求字符串的字节长度5 寻找第...

程序IT圈 201

桑基图进阶玩法:用Python分析20年土地利用变化规律(含数据清洗技巧)

本文详细介绍了如何利用Python和桑基图分析20年土地利用变化规律,涵盖数据清洗、转移矩阵构建及高级可视化技巧。通过实战案例,展示了从原始栅格数据到交互式桑基图的全流程,帮助读者掌握土地利用变迁分析的核心方法。

cream的博客 407

Python下载实战:从基础到高级的20个技巧

(注:每个章节可配代码片段、性能对比数据及实际案例,建议按需展开为独立文章模块)展示如何设置请求头(User-Agent、Referer)模拟浏览器行为。讨论HTTP状态码(如200、404、503)的处理策略。处理动态生成的下载链接(如含时间戳或Token)数据库记录下载状态(SQLite/MySQL)库的基本用法,包括GET和POST请求的区别。结构化日志记录(下载量、速度、失败原因)识别IP被封的异常模式与自动切换方案。MD5/SHA1校验码的生成与比对。处理浏览器弹窗和下载对话框的技巧。

2501_91593725的博客 533

Python爬虫20个案例资源下载

Python爬虫20个案例资源下载 去发现同类优质开源项目:https://gitcode.com/ 资源简介 本仓库提供了一个名为“Python爬虫20个案例”的资源文件下载。该资源文件详细讲解了Python爬虫的20个实际案例,涵盖了从基础到进阶的各种爬虫技术。无论你是初学者还是有一定经验的开发者,这些案例都能帮助你更好地理解和掌握Python爬虫的技巧。 资源内容 案例1-5: 基础爬虫案...

gitblog_06635的博客 450

20行代码,如何用Python将 “妹子图” 制成好玩儿的gif动态图?

大家好,我是辰哥~今天教大家用20行代码+多张图片制作gif动态图(文末附完整代码+素材)前言 本文有很多超实用的小知识点,你看完这篇文章,不仅仅收获一项技能,你收获的还有很多不同的知识...

公众号:Python研究者 1409

20 本优秀的 Python 电子书

想要学习Python编程语言的读者有大量相关书籍可供选择,有印刷版也有电子版,而Python是一门开源的编译语言,开发者也提供了不少免费可自由下载的Python电子书。本文挑选其中最优秀的20本Python电子书,内容覆盖了Python的一般介绍,游戏开发,编程技巧,儿童编程学习等类别,它们大多数都采用了创作共用署名非商业许可证,如《Think Python》、《Invent Your O

黄沙百战穿金甲,不破楼兰终不还。 1462
上一篇: 面向小白的C语言随机数详解
下一篇: C++二进制文件保存数据 类与结构体的区别
AimerNeige
博客等级 码龄7年 33粉丝 10原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值