Python专题, 语言

常用的Python软件包

以下推荐自己常用的一些Python软件包,目前列出9个软件包,后续不定期更新。环境安装可参考这篇博文:安装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. 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
541 次浏览

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

评论说明:
(1)在保留浏览器缓存的前提下,目前支持72小时自主修改或删除个人评论。如果自己无法修改或删除评论,可再次评论或联系我。如有发现广告留言,请勿点击链接,博主会不定期删除。
(2)评论支持Latex公式。把latexpage作为标签放在任何位置,评论中的公式可正常编译,示例:
$Latex formula$  [latexpage]

发表回复

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