本篇文章汇总了在工程代码中,常用的Python函数语句的功能及用法,正在持续更新中……
os.listdir(*path)
返回的是list类型的文件名,并非子文件路径,且返回值是乱序的,根据实际要求,需要额外编写排序命令xxx.sort()
用于list类型变量的自动排序:()
内可设置排序参照变量key
import re, os
files = os.listdir("./images/")
# 根据上述文件夹下文件名中出现的数字大小(仅有一段数字时),对所有文件名进行排序(由小到大)
files.sort(key=lambda x: re.findall(r"\d+",x))
os.path.join(*arg1, *arg2, *arg3)
会在各个输入参数间添加\
或/
,表示文件夹层级的嵌套,因此需要拼接文件名称时,需要用str("str1" + "str2")
来定义xxx.append()
表示list类型变量在列表末尾添加元素:可以从空列表开始添加,且仅增加元素,不会嵌套内层列表。功能:遍历列表/字符串/元组,返回下标及元素
seq = ['one', 'two', 'three']
for i, element in enumerate(seq):
print(i, element)
'''输出:
0 one
1 two
2 three
'''
转换数据类型(bool,int,float之间转换)
import numpy as np
data = np.random.normal(0, 1, (1, 5))
# data = array([[1.766, -1.765, 2.576, -1.469, 1.69]])
threshold = 0
test1 = (data > threshold)
# test1 = array([[True, False, True, False, True]], dtype=bool)
test2 = test1.astype(int)
# test2 = array([[1, 0, 1, 0, 1]])
判断字符串是否以...开头或结尾
import os
path = "./Pictures/images/"
files = os.listdir(path) # 获取该路径下所有文件名(list类型)
for filename in files:
if filename.startswith("img"):
print(filename) # 打印以'img'开头的文件名
if filename.endswith(".jpg"):
print(filename) # 打印以'.jpg'结尾的文件名
正则表达式:提取字符串中的数字
import re # 导入正则表达式模块
string = "#$1.23,zimu3,520.1314, 300"
# 获取所有数字
print(re.findall(r"\d+",string))
# 数字输出结果:['1', '23', '3', '520', '1314', '300']
# 获取所有数值(包含小数一起识别匹配)
print(re.findall(r"\d+\.?\d*",string))
# 数值输出结果:['1.23', '3', '520.1314', '300']
功能:矩阵按照axis方向依次累加
import numpy as np
c=[[1,2,3],[4,5,6],[7,8,9]]
np.cumsum(c,axis=0)
'''输出:
array([[ 1, 2, 3],
[ 5, 7, 9],
[12, 15, 18]])'''
np.cumsum(c,axis=1)
'''输出:
array([[ 1, 3, 6],
[ 4, 9, 15],
[ 7, 15, 24]])'''
计算矩阵相邻行/列的差值
import numpy as np
x = np.array([[1, 3, 6, 10], [0, 5, 6, 8]])
np.diff(x)
'''输出:
array([[2, 3, 4],
[5, 1, 2]])'''
np.diff(x, axis=0)
'''输出:
array([[-1, 2, 0, -2]])'''
矩阵按行/列逻辑与
import numpy as np
arr = np.array([[True,True],[False,True]])
print(np.all(arr,axis=0)) # 矩阵在垂直方向,即列方向,计算逻辑与
# 输出:array([False, True])
print(np.all(arr,axis=1)) # 矩阵在水平方向,即行方向,计算逻辑与
# 输出:array([True, False])
arr = np.array([[2, 3, 1],[-1, 2, -1]])
print(np.all(arr>0, axis=0))
# 输出:array([False, True, False])
print(np.all(arr>0, axis=1))
# 输出:array([True, False])
矩阵转置
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])
# 这里可以三种方法达到转置的目的
# 第一种方法
print(arr.T)
# 第二种方法
print(arr.transpose())
# 第三种方法
print(arr.swapaxes(0, 1))
# 上面三种方法等价
'''三种方法的输出结果均为:
[[ 1 4 7 10]
[ 2 5 8 11]
[ 3 6 9 12]]
'''
转换数组/矩阵维度
shape = data.shape # shape = [53, 63, 52, 4, 111]
series = data.reshape(-1, 444) # series.shape = [173628, 444]
img = series.reshape([53, 63, 52, 444]) # img.shape = [53, 63, 52, 444]
对DataFrame类型的数据内所有值,根据给定阈值和判断条件,进行二元逻辑运算
二元运算函数 | eq | ne | le | lt | ge | gt |
---|---|---|---|---|---|---|
对应二元逻辑运算 | == | != | <= | < | >= | > |
import pandas as pd
df = pd.DataFrame({'cost':[250, 150, 100],
'revenue':[100, 250, 300]}, index=['A', 'B', 'C'])
print(df)
'''
cost revenue
A 250 100
B 150 250
C 100 300
'''
print(df == 100)
print(df.eq(100))
'''上面两种方式的输出结果均为:
cost revenue
A False True
B False False
C True False
'''
分位数统计(例如:统计数值的前10%)
import pandas as pd
import numpy as np
a = np.array([[1,2,3,4,5,6,7,8,9], [9,8,7,6,5,4,3,2,1]]) # a.shape = [2, 9]
df = pd.DataFrame(a) # df.shape = [2, 9]
b = df.quantile(0.8, axis=1)
print(b)
'''输出DataFrame类型:
0 7.4
1 7.4
'''
top20 = df.ge(b, axis=0)
print(top20)
'''输出DataFrame类型:
0 1 2 3 4 5 6 7 8
0 False False False False False False False True True
1 True True False False False False False False False
'''
mkdir()
:创建单级目录/文件夹makedirs()
:创建多目录/文件夹if not os.path.exists(folder):
os.mkdir(folder)