python学习笔记

1、python logging日志模块

       logging模块

2、Python之os库使用

3、Python datatime

      python中time,datetime模块常用方法总结

4、@staticmethod和@classmethod的用法

 详解闭包与装饰器

5、python中的easydict模块使用

6、错误处理try...except 与 raise的用法7、字典中的items()、keys()、values()方法

(1)、items()方法将字典里对应的一对键和值以元组的形式(键, 值),存储为所生成序列里的单个元素
(2)、keys()方法将字典里的每个键以字符串的形式,存储为所生成序列里的单个元素
(3)、values()方法将字典里的每个值以字符串的形式,存储为所生成序列里的单个元素

7、python解析yaml类型文件

8、深度学习中easydict模块使用

from easydict import EasyDict as edict
config = edict()
config.TRAIN = edict() # 创建一个字典,key是Train,值是{}
config.Test = edict()
# config.TRAIN = {} # 这个和上面的那句话是等价的,相当于创建一个字典的key
config.TRAIN.batch_size = 25  # 然后在里面写值,表示Train里面的value也是一个字典
config.TRAIN.early_stopping_num = 10
config.TRAIN.lr = 0.0001
print(config)

输出:

{'TRAIN': {'batch_size': 25, 'early_stopping_num': 10, 'lr': 0.0001}, 'Test': {}}

如果利用Python中的字典创建会比较麻烦,所以利用edit()初始化来创建字典,这样创建起来就比较容易 。

9、ast.literal_eval

eval函数实现的功能

  • 将字符串string对象转化为有效的表达式参
  • 求值运算返回计算结果

解决安全隐患,使用literal_eval方法。需先导入ast

import ast
f = '''{"isSucess":true, "result": '[{"name":"yoyo", "status": "200"}]'}'''
f1 = f.replace("true", "True").replace("false", "False").replace("null", "None")
print(ast.literal_eval(f1))
print(eval(f1))

10、深入浅出理解tf.transpose

tf.transpose(
    matrix,
    perm=None
    )
  • 输出数据tensor的第i维将根据perm[i]指定。比如,如果perm没有给定,那么默认是perm = [n-1, n-2, …, 0],其中rank(a) = n。
  • 默认情况下,对于二维输入数据,其实就是常规的矩阵转置操作。
import tensorflow as tf

sess = tf.Session()
input_data = tf.constant([[1, 2, 3], [4, 5, 6]])
print(sess.run(tf.transpose(input_data)))
# [[1 4]
#  [2 5]
#  [3 6]]
print(sess.run(input_data))
# [[1 2 3]
#  [4 5 6]]
print(sess.run(tf.transpose(input_data, perm=[1, 0])))
# [[1 4]
#  [2 5]
#  [3 6]]
input_data = tf.constant([[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]])
print('input_data shape: ', sess.run(tf.shape(input_data)))
# [1, 4, 3]
output_data = tf.transpose(input_data, perm=[2, 1, 0])
print('output_data shape: ', sess.run(tf.shape(output_data)))
# [3, 4, 1]
print(sess.run(output_data))
# [[[ 1]
#   [ 4]
#   [ 7]
#   [10]]
# 
#  [[ 2]
#   [ 5]
#   [ 8]
#   [11]]
# 
#  [[ 3]
#   [ 6]
#   [ 9]
#   [12]]]
sess.close()

"""输入参数:
  ● a: 一个Tensor。
  ● perm: 一个对于a的维度的重排列组合。
  ● name:(可选)为这个操作取一个名字。
输出参数:
  ● 一个经过翻转的Tensor。"""

11、tf.gather用法

从’params"中,按照axis坐标和indices标注的元素下标,把这些元素抽取出来组成新的tensor.
测试代码:

    import tensorflow as tf
    import numpy as np
    print("\n先测试一维张量\n")
    t=np.random.randint(1,10,5)
    g1=tf.gather(t,[2,1,4])
    sess=tf.Session()
    print(t)
    print(sess.run(g1))
    print("\n再测试二维张量\n")
    t=np.random.randint(1,10,[4,5])
    g2=tf.gather(t,[1,2,2],axis=0)
    g3=tf.gather(t,[1,2,2],axis=1)
    print(t)
    print(sess.run(g2))
    print(sess.run(g3))

结果如下:

先测试一维张量
[7 4 7 1 3]
[7 4 3]
再测试二维张量
[[5 5 7 4 3]
 [8 7 6 5 2]
 [6 9 4 4 8]
 [7 3 3 2 2]]
[[8 7 6 5 2]
 [6 9 4 4 8]
 [6 9 4 4 8]]
[[5 7 7]
 [7 6 6]
 [9 4 4]
 [3 3 3]]

12、tf.equal的使用

tf.equal(A, B)是对比这两个矩阵或者向量的相等的元素,如果是相等的那就返回True,反正返回False,返回的值的矩阵维度和A是一样的

import tensorflow as tf
import numpy as np
 
A = [[1,3,4,5,6]]
B = [[1,3,4,3,2]]
 
with tf.Session() as sess:
    print(sess.run(tf.equal(A, B)))

输出:

[[ True  True  True False False]]

13、tf.where()用法

 where(condition, x=None, y=None, name=None)的用法


condition, x, y 相同维度,condition是bool型值,True/False

返回值是对应元素,condition中元素为True的元素替换为x中的元素,为False的元素替换为y中对应元素

x只负责对应替换True的元素,y只负责对应替换False的元素,x,y各有分工

由于是替换,返回值的维度,和condition,x , y都是相等的。

看个例子:

import tensorflow as tf
x = [[1,2,3],[4,5,6]]
y = [[7,8,9],[10,11,12]]
condition3 = [[True,False,False],
             [False,True,True]]
condition4 = [[True,False,False],
             [True,True,False]]
with tf.Session() as sess:
    print(sess.run(tf.where(condition3,x,y)))
    print(sess.run(tf.where(condition4,x,y)))  

结果:

1, [[ 1  8  9]
    [10  5  6]]
2, [[ 1  8  9]
    [ 4  5 12]]

14、tf.stack()和tf.unstack()的用法

tf.stack()这是一个矩阵拼接的函数,tf.unstack()则是一个矩阵分解的函数

c是拼接,而d和e则是不同维度的分解

15、tf用法大全:tf.add、tf.subtract、tf.multiply、tf.scalar_mul、tf.div、tf.divide、tf.truediv、tf.flo

import tensorflow as tf

x = tf.constant([[10, 20]], dtype=tf.float32)
y = tf.constant([[3, 4]], dtype=tf.float32)

with tf.Session() as sess:
# 对应元素 相加
print '\ntf.add(x, y) : ', sess.run(tf.add(x, y))
# 对应元素 相减
print '\ntf.subtract(x, y) : ', sess.run(tf.subtract(x, y))
# 对应元素 相乘
print '\ntf.multiply(x, y) : ', sess.run(tf.multiply(x, y))
# 所有元素 等比例放大
print '\ntf.scalar_mul(9.0, x) : ', sess.run(tf.scalar_mul(9.0, x))
# 对应元素 相除
print '\ntf.div(x, y) : ', sess.run(tf.div(x, y))
# 对应元素 相除
print '\ntf.divide(x, y) : ', sess.run(tf.divide(x, y))
# 对应元素 相除
print '\ntf.truediv(x, y) : ', sess.run(tf.truediv(x, y))
# 对应元素 地板除
print '\ntf.floordiv(x, y) : ', sess.run(tf.floordiv(x, y))
# 对应元素 截断除 取余
print '\ntf.truncatemod(x, y) : ', sess.run(tf.truncatemod(x, y))
# 对应元素 地板除 取余
print '\ntf.floormod(x, y) : ', sess.run(tf.floormod(x, y))
# 对应元素 相除 取余
print '\ntf.mod(x, y) : ', sess.run(tf.mod(x, y))
# 两组 3元素向量的tensor 交叉乘
print '\ntf.cross([[10, 20, 30]], [[1, 2, 3]]) : ', sess.run(tf.cross([[10, 20, 30]], [[1, 2, 1]]))

16、tf.image.crop_and_resize( )的用法

tf.image.crop_and_resize(image,boxes,box_ind,crop_size,methpd='bilinear',extrapolation_value=0,name=None)

image: 表示特征图

boxes:指需要划分的区域,输入格式为[ymin,xmin,ymax,xmax]

设crop的区域坐标是[y1,x1,y2,x2],那么想要得到相应正确的crop图形就一定要归一化,即图片的长度是[w,h],则实际输入的boxes为[y1/h,x1/w,y2/h,x2/w]。

不归一化的话,会自动进行补齐,超出1的就全变成成黑色框了。

box_ind: 是boxes和image之间的索引

crop_size: 表示RoiAlign之后的大小。

17、np.vstack, np.hstack

np.hstack(tup)
沿着水平方向将数组堆叠起来。 
示例代码:

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
res = np.hstack((arr1, arr2))

print res


arr1 = np.array([[1, 2], [3, 4], [5, 6]])
arr2 = np.array([[7, 8], [9, 0], [0, 1]])
res = np.hstack((arr1, arr2))

print res

结果如下:

[1 2 3 4 5 6]

[[1 2 7 8]
 [3 4 9 0]
 [5 6 0 1]]

18、三种取整函数(// int round)的区别

>>> 5//3
1
>>> -5//3
-2
>>> int(5.3)
5
>>> int(5.6)
5
>>> round(5.3)
5
>>> round(5.6)
6

//运算取整时保留整数的下界,int则是剪去小数部分,只保留前面的整数,round函数遵循四舍五入的法则。

19、np.vstack()和np.hstack()函数

import numpy as np
a=np.array([[ 8., 8.],[ 0., 0.]])
b=np.array([[ 1., 3.], [ 6., 4.]])
print np.vstack((a,b))  #将两个数组按行放到一起
[[8. 8.]
 [0. 0.]
 [1. 3.]
 [6. 4.]]

print np.hstack((a,b)# 将两个数组按列放到一起
[[8. 8. 1. 3.]
 [0. 0. 6. 4.]]

20、Cython 基本用法

Cython三分钟入门

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值