以下推荐自己常用的一些Python软件包,后续不定期更新。环境安装可参考这篇博文:安装Python环境。
0. Python内置语法
a = [1, 2] # 数组
print(a)
print(len(a)) # 数组长度
a.append(3) # 增加元素
print(a)
b = range(5) # 数列(从0开始)
print(b)
1. numpy
numpy官网:https://numpy.org/。参考博文:Python和Numpy库的常用语句。
例子:
import numpy as np
np.zeros((2, 3)) # 零矩阵
np.identity(3) # 单位矩阵
np.diag([1, 3, 5]) # 对角矩阵
matrix1 = np.array([[3, 5+1j], [2, 7]]) # numpy矩阵
matrix1.shape # 矩阵的维度
matrix1.transpose() # 矩阵转置
matrix1.conj() # 矩阵所有元素共轭
np.conj(matrix1) # 矩阵所有元素共轭(同上)
np.arange(1, 5, 1) # 数列(左闭右开)
np.linspace(-2, 2, 5) # 数列(左闭右闭)
np.random.uniform(-2, 2) # 随机数
np.random.randint(0, 2) # 随机整数(左闭右开)
np.sort([1, 7, 0, 3]) # 排列
np.argsort([1, 7, 0, 3]) # 排列索引
np.linalg.det(matrix1) # 行列式
matrix2 = np.linalg.inv(matrix1) # 求逆
np.matmul(matrix1, matrix2) # 矩阵乘积
np.dot(matrix1, matrix2) # 矩阵乘积(同上)
eigenvalue, eigenvector = np.linalg.eig(matrix1) # 求本征值,本征向量
matrix3 = np.append(matrix1, matrix2, axis=0) # 增加数组元素或者矩阵的行
2. math
math官网:https://docs.python.org/3/library/math.html。math中的一些函数在numpy中可以直接调用。
例子:
import math
print(math.pi)
print(math.e)
print(math.exp(1))
print(math.cos(math.pi))
print(math.sqrt(2), '\n')
import numpy as np
print(np.pi)
print(np.e)
print(np.exp(1))
print(np.cos(np.pi))
print(np.sqrt(2))
3. cmath
cmath官网:https://docs.python.org/3/library/cmath.html。因为numpy和math中指数等无法处理复数的情况,所以要用cmath。
例子:
import cmath
print(cmath.exp(1j*cmath.pi))
4. copy
copy官网:https://docs.python.org/3/library/copy.html。如果直接用等于号,两个变量会指向相同的id,改变一个值,另外一个值可能会发生改变,容易出错,所以要用上这个copy。
例子:
import copy
import numpy as np
array_1 = [1, 2, 3]
array_2 = array_1
array_1[0] = 100
print('array_1=', array_1)
print('array_2=', array_2, '\n')
array_1 = np.array([1, 2, 3])
array_2 = array_1
array_1[0] = 100
print('array_1=', array_1)
print('array_2=', array_2, '\n')
array_1 = [1, 2, 3]
array_2 = copy.deepcopy(array_1)
array_1[0] = 100
print('array_1=', array_1)
print('array_2=', array_2, '\n')
array_1 = np.array([1, 2, 3])
array_2 = copy.deepcopy(array_1)
array_1[0] = 100
print('array_1=', array_1)
print('array_2=', array_2)
运行结果:
array_1= [100, 2, 3]
array_2= [100, 2, 3]
array_1= [100 2 3]
array_2= [100 2 3]
array_1= [100, 2, 3]
array_2= [1, 2, 3]
array_1= [100 2 3]
array_2= [1 2 3]
5. matplotlib
matplotlib官网:https://matplotlib.org/。参考博文:Python中Matplotlib库的常用语句、使用Matplotlib画图。
例子:
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(range(10), range(10))
ax.set_title('Example', fontsize=20, fontfamily='Times New Roman')
ax.set_xlabel('x', fontsize=20, fontfamily='Times New Roman')
ax.set_ylabel('y', fontsize=20, fontfamily='Times New Roman')
plt.show()
6. functools
functools官网:https://docs.python.org/3/library/functools.html。“偏函数”的使用。
例子:
import functools
def func(x, y, z):
return x-y+z
partial_func = functools.partial(func, x=5, z=0)
print(partial_func(y=2))
运行结果:
3
7. time
time官网:https://docs.python.org/3/library/time.html。
例子:
import time
start_time = time.time()
time.sleep(5)
end_time = time.time()
print(end_time-start_time)
运行结果:
5.002896547317505
8. os
os官网:https://docs.python.org/3/library/os.html。
例子:
import os
os.getcwd() # 获取路径
if os.path.exists('new_dir') == False: # 判断路径是否存在
os.makedirs('new_dir') # 新建文件夹
os.chdir('new_dir') # 切换到该文件夹
print(os.walk('/')) # 游走目录
9. tqdm
tqdm是一个Python库,它为循环迭代提供了一个简单而有效的进度条显示功能。
from tqdm import tqdm
import time
import numpy as np
for i in tqdm(np.arange(1, 100)):
time.sleep(0.1)
print('', i)
10. multiprocessing
官网:https://docs.python.org/3/library/multiprocessing.html。一个并行计算的软件包,参考博文:在Python中实现多个任务并行。
例子:
from multiprocessing import Process
import time
def f(name):
time.sleep(5)
print('Hello', name)
if __name__ == '__main__':
start_time = time.time()
p1 = Process(target=f, args=('Bob',))
p2 = Process(target=f, args=('Alice',))
p1.start()
p2.start()
p1.join()
p2.join()
end_time = time.time()
print(end_time - start_time, '\n')
start_time = time.time()
f('Bob')
f('Alice')
end_time = time.time()
print(end_time - start_time)
运行结果:
Hello Alice
Hello Bob
5.148028135299683
Hello Bob
Hello Alice
10.003596782684326
11. threading
Threading多线程并行。
例子:
import threading
import time
def print_numbers(x):
for i in range(5):
time.sleep(1)
print(f"Thread {x}: {i}")
# 创建两个线程
thread1 = threading.Thread(target=print_numbers, args=('A'))
thread2 = threading.Thread(target=print_numbers, args=('B'))
# 启动线程
thread1.start()
thread2.start()
# 等待两个线程完成
thread1.join()
thread2.join()
print("Both threads have finished.")
12. json
JSON(JavaScript Object Notation)可以简单地视为字典(或映射)的字符串表示形式。JSON是一种轻量级的数据交换格式,通常用于在网络之间传输数据。它采用键值对的形式,类似于字典或映射的结构。以下是相互转换的例子。
import json
# 定义一个字典对象
data = {
"name": "张三",
"age": 30,
"city": "北京"
}
print(type(data))
print(data.items())
for key, value in data.items():
print(f'{key}: {value}')
print()
# 将字典对象转换为JSON格式
json_data = json.dumps(data)
print(type(json_data))
print("JSON格式数据:", json_data)
print()
# 将JSON格式数据转换回字典对象
dict_data = json.loads(json_data)
print(type(dict_data))
print("字典对象:", dict_data)
【说明:本站主要是个人的一些笔记和代码分享,内容可能会不定期修改。为了使全网显示的始终是最新版本,这里的文章未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com】