Python专题, 语言

常用的Python软件包

以下推荐自己常用的一些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)
1,142 次浏览

【说明:本站主要是个人的一些笔记和代码分享,内容可能会不定期修改。为了使全网显示的始终是最新版本,这里的文章未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code