python模块 积累学习

chinesecalendar

可以用来判断某年某月某一天是不是工作日/节假日。
支持2004年至2021年,包括2020年的春节延长。

pip install chinesecalendar

官方链接:chinesecalendar 1.5.0

math

import math  # 或者调用math模块下面的所有函数 from math import *
print(math.pi) # 圆周率 3.141592653589793
x = 3.4
print(math.ceil(x))  # 向上取整 4
print(math.floor(x))  # 向下取整 3
y = 2
print(math.pow(x, y)) # 11.559999
z =144
print(math.sqrt(z))  # 12.0
list_num = [1, 2, 4, 7, 10, 145]
print(math.fsum(list_num)) # 求和 169.0

datetime

import datetime 

now = datetime.datetime.now()
print(now)
print(now.isocalendar())
# datetime类型转换为字符串,格式化显示
print(datetime.datetime.strftime(now, "%Y-%m-%d"))
# 字符串转换为datetime类型,解析时间字符串
# 前者放的是解析parse的字符串,后者放的是解析的格式
date_str = input('请输入日期(yyyy/mm/dd):')
print(datetime.datetime.strptime(date_str, format('%Y/%m/%d')).isocalendar())

在这里插入图片描述

os

os(operate system),用于访问操作系统功能的模块。
使用os模块中提供的接口,可以实现跨平台访问,通用操作有:
1.获取平台信息;
2.对目录的操作(增删改查);
3.判断操作。

import os

print(os.sep) # 主要用于系统路径的分隔符 \
# windows 输出 nt;linux 输出 posix
print(os.name) # 指示你正在使用的工作台 nt
print(os.getenv('path')) # 读取环境变量 一堆
print(os.getcwd()) # 获取当前的路径 C:\Users\Administrator\Desktop

os.listdir() # 返回指定目录下的所有文件和目录名
os.mkdir() # 只创建一个目录文件
os.rmdir() # 删除一个空目录,若目录中有文件则无法删除
os.makedirs(dirname) # 可以生成多层递归目录。若目录全部存在,则创建目录失败
os.removedirs(dirname) # 可以删除多层递归的空目录
os.chdir() # 改变当前目录到指定目录中
os.rename() # 重命名目录名或者文件名。重命名后的文件名已存在,则重命名失败

os.path.exists(path) # 判断文件/目录是否存在
os.path.isfile(path) # 判断是否为文件
os.path.isdir(path) # 判断是否为目录
os.path.basename(path) # 返回文件名
os.path.dirname(path) # 返回文件路径
os.path.getsize(name) # 获得文件大小
os.path.abspath(name) # 获得绝对路径
os.path.join(path, name) # 连接目录与文件名或目录

numpy

相关属性

import numpy as np

array = np.array([[1,2,3], [4,5,6], [7,8,9]])
print(array)
print(array.ndim)#维度
print(array.shape)#形状
print(array.size)#大小
print(array.dtype)#元素类型

在这里插入图片描述

创建数组

a = np.array([1,2,3],dtype=np.int32)
b = np.array([1,2,3],dtype=np.float)
c = np.array([1,2,3])#一维数据
d = np.array([[1,2,3],[4,5,6]]) #二维矩阵
zero = np.zeros((2,3)) #生成2行3列全为0的矩阵
one = np.ones((3,4)) #生成3行4列全为1的矩阵
empty = np.empty((3,2))#生成3行2列全都接近于0(不等于0)的矩阵
e = np.arange(10)#生成0-10的数列
f = np.arange(4,12)#生成4到12,不包含12的数列
g = np.arange(1,20,3)#生成1到20,不包含20,中间间隔是3的数列
h = np.arange(8).reshape(4,2)#重新定义矩阵的形状

数组运算

arr1 = np.array([[1,2,3],[4,5,6]]) # 2行3列
arr2 = np.array([[1,1,2],[2,3,3]])
arr3 = arr1 + arr2
arr4 = arr1 - arr2
arr5 = arr1 * arr2  #按位相乘
arr6 = arr1 ** arr2 #幂运算
arr7 = arr1 / arr2
arr8 = arr1 % arr2  # 取余
arr9 = arr1 // arr2 
arr10 = arr1 + 2  # 所有元素加2
arr11 = arr1 * 10 # 所有元素乘以10
arr12 = arr1 > 3 # 判断哪些元素大于3,以True/False显示
arr13 = np.ones((3, 5))
arr14 = np.dot(arr1, arr13) # 矩阵乘法
arr15 = arr1.dot(arr13) # 矩阵乘法
arr16 = arr1.T # 矩阵转置
arr17 = np.transpose(arr1) # 矩阵转置

在这里插入图片描述

sample1 = np.random.random((3,2))  #生成3行2列从0到1的随机数
sample2 = np.random.normal(size=(3,2))  #生成3行2列符合标准正态分布的随机数
sample3 = np.random.randint(0,10,size=(3,2))  #生成3行2列从0到10的随机整数
print(np.sum(sample1))  #求和 3.7666557951619426
print(np.min(sample1))  #求最小值 0.14342807815576963
print(np.max(sample1))  #求最大值 0.905760551580983
sum_axis0 = np.sum(sample1, axis=0)  #对列求和
sum_axis1 = np.sum(sample1, axis=1)  #对行求和
print(np.argmin(sample1))  #求最小值的索引 5
print(np.argmax(sample1))  #求最大值的索引 4
print(np.mean(sample1))  #求平均值 0.6277759658603238
print(sample1.mean())  #求平均值 0.6277759658603238
print(np.median(sample1))  #求中位数 0.7812083521503022
sample1_sqrt = np.sqrt(sample1)  # 开方
sample3_sort = np.sort(sample3) # 排序
sample3_clip = np.clip(sample3,2,7) # 小于2就变成2,大于7就变为7

在这里插入图片描述

索引

arr1 = np.arange(2,14)
print(arr1) # [ 2  3  4  5  6  7  8  9 10 11 12 13]
print(arr1[2]) #索引是从0开始的,选取第二个位置的数据 4
print(arr1[1:4]) #第一到第四个位置的数据 [3 4 5]
print(arr1[2:-1]) #第二到倒数第一个位置的数据 [ 4  5  6  7  8  9 10 11 12]
print(arr1[:5]) #前五个数据 [2 3 4 5 6]
print(arr1[-2:]) #最后两个数据[12 13]
arr2 = arr1.reshape(3,4)
#[[ 2  3  4  5]
# [ 6  7  8  9]
# [10 11 12 13]]
print(arr2[1]) # [6 7 8 9]
print(arr2[1][1]) # 7
print(arr2[1,2]) # 8
print(arr2[:,2]) # [ 4  8 12]
for i in arr2: #迭代行
    print(i)
#[2 3 4 5]
#[6 7 8 9]
#[10 11 12 13]
for i in arr2.T:#迭代列
    print(i)
#[ 2  6 10]
#[ 3  7 11]
#[ 4  8 12]
#[ 5  9 13]
for i in arr2.flat:#一个一个元素迭代
    print(i)

数组合并

arr1 = np.array([1,2,3])
arr2 = np.array([4,5,6])
arr3 = np.vstack((arr1,arr2))#垂直合并
print(arr3.shape) # (2, 3)
arr4 = np.hstack((arr1,arr2))#水平合并
print(arr4.shape) # (6, )
arr5 = np.vstack((arr1,arr2,arr3))#多个array的合并
arr6 = np.hstack((arr1,arr2,arr4))
#合并的array维度要相同,array形状要匹配
arr7 = np.concatenate((arr1,arr2,arr1))
arr8 = np.concatenate((arr3,arr5),axis=0) # axis=0纵向合并
arr9 = np.concatenate((arr3,arr3),axis=1) # axis=1横向合并

在这里插入图片描述

arr1 = np.array([1,2,3])  # [1, 2, 3]
arr2 = arr1.T #一维的array不能转置 [1, 2, 3]
print(arr2.shape) # (3,)
arr3 = arr1[np.newaxis,:]  #新增加了一个维度,变成了1行3列
#  [[1 2 3]]
print(arr3.shape) # (1, 3)
arr4 = arr3.T
#[[1]
# [2]
# [3]]
arr5 = arr1[:,np.newaxis]
#[[1]
# [2]
# [3]]
print(arr5.shape) # (3, 1)
arr6 = np.atleast_2d(arr1)  #自动变成至少两维的 [[1 2 3]]
arr7 = arr6.T
#[[1]
# [2]
# [3]]

数组分割

arr1 = np.arange(12).reshape((3,4))
arr2,arr3 = np.split(arr1,2,axis=1)#水平方向分割,分成2份
arr4,arr5,arr6 = np.split(arr1,3,axis=0)#垂直方向分割,分成3份
arr7,arr8,arr9 = np.array_split(arr1,3,axis=1)#水平方向分割,分成3份,不等分割
arrv1,arrv2,arrv3 = np.vsplit(arr1,3)#垂直分割
arrh1,arrh2 = np.hsplit(arr1,2)#水平分割

在这里插入图片描述

深浅拷贝

arr1 = np.array([1,2,3])  # [1, 2, 3]
arr2 = arr1  #arr1,arr2共享一块内存,浅拷贝
arr2[0] = 5
print(arr1)  # [5, 2, 3]
print(arr2)  # arr1和arr2一起变化 [5, 2, 3]

arr3 = arr1.copy()  #深拷贝 [5, 2, 3]
arr3[0] = 10
print(arr1)  # [5, 2, 3]
print(arr3)  # [10, 2, 3]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值