人生苦短,我用python。本文会持续更新。
1. 将列表中的所有元素组合成字符串
a = ['python', 'is', 'awesome']
print(' '.join(a))
>> python is awesome
2. 查找列表中频率最高的值
b = [1,2,3,1,2,3,3,2,2,3,3,4,5]
print(max(set(b),key=b.count))
>> 3
3. 合并字典
a = {'a': 1}
b = {'b': 2}
a.update(b)
print(a)
>> {'a': 1, 'b': 2}
4. 返回列表中最小和最大值的索引
lst = [40, 10, 20, 30]
def minIndex(lst):
return min(range(len(lst)),key=lst.__getitem__)
def maxIndex(lst):
return max(range(len(lst)),key=lst.__getitem__)
print(minIndex(lst))
>> 1
print(maxIndex(lst))
>> 0
5. 类型互转
1. 字符串转字典 str -> dict
name_str = "{'name':'mario', 'sex' : 'man'}"
name_dict = eval(name_str)
print(type(name_dict), name_dict)
>> <class 'dict'> {'name': 'mario', 'sex': 'man'}
2. 字典转字符串 dict -> str
name_dict = {'name': 'mario', 'sex': 'man'}
name_str = str(name_dict)
print(type(name_str), name_str)
>> <class 'str'> {'name': 'mario', 'sex': 'man'}
6. 读取文件
1.readlines()方法:返回一个列表,数据量大时很占用内存
with open("test.txt") as ft:
flines = ft.readlines()
2. 循环一行一行读取文件,速度快,内存使用小,推荐使用此方法
with open("test.txt") as ft:
for line in ft:
do_with(line)
7. os.path 常用操作
import os
test_path = '/home/mario/Projects/test_platerect.txt'
1. ##返回文件名
print(os.path.basename(test_path))
>> test_platerect.txt
2. ##返回文件路径
print(os.path.dirname(test_path))
>> /home/mario/Projects
3. ##把路径分割成 dirname 和 basename,返回一个元组
print(os.path.split(test_path))
>> ('/home/mario/Projects', 'test_platerect.txt')
4. ##分割路径,返回路径名和文件扩展名的元组
print(os.path.splitext(test_path))
>> ('/home/mario/Projects/test_platerect', '.txt')
8. numpy插入一行或一列
numpy.insert(arr, obj, values, axis=None)
函数作用:将向量插入某一行或列
参数说明:
arr:array (输入矩阵)
obj:int (插入在第几行/列之前)
values:array (要插入的矩阵)
axis:int (插入某一行(0)还是列(1))
返回值:
返回一个插入向量后的数组。若axis=None,则返回一个扁平(flatten)数组
9. reshape给图像增加一个维度
import cv2
img = cv2.imread('lena.jpg') #假设lena.jpg是灰度图
height, width = img.shape #默认单通道的话channel会被去掉,只显示宽和高两个维度
img_res = img.reshape(width, height, 1)
hei, wid, chann = img_res.shape ##输出为(hei, wid, 1)三个维度
注:将彩色三通道图像读入后转灰度图,保存后imread的图像通道问题和参数有关系。
img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
## 将img_gray保存后读取后的维度要指定cv2.imread的参数
img_gray = cv2.imread(img, -1) 灰度图的通道为1
img_gray = cv2.imread(img) 灰度图的通道仍然为3