目录
python学习网址
https://www.runoob.com/python/python-variable-types.html
1.ROS消息传递——std_msgs
https://blog.csdn.net/qq_36355662/article/details/62226935
https://blog.csdn.net/qq_30460905/article/details/88941899
2.字符串与数字转化
https://blog.csdn.net/u013475964/article/details/68954251
https://www.cnblogs.com/likailiche/p/4902863.html
3.FileStorage在Python中的API和使用方法
http://zhaoxuhui.top/blog/2018/06/29/PythonOpenCVFileStorage.html
一、python 语言基础
1.运算符
+, -, *, /, %(取余), //(整除), **(幂)
除法(/)在 py2 中,如果被除数为整数,结果也为整数. py3 中正常
2.基本输入和输出
input( ) 输入:
注意:
- 在py3 中,无论输入的是数字还是字符,都将被作为字符串读取.
- 2.在py2 中, 输入字符串类型时,需要加引号.
b = float(input("请输入数字: ")) #将输出的字符串类型转化为浮点型
print( ) 输出
以下是 print() 方法的语法:
print(*objects, sep=' ', end='\n', file=sys.stdout)
–参数:–
objects – 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。
sep – 用来间隔多个对象,默认值是一个空格。
end – 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。
file – 要写入的文件对象。
三、列表
1.定义:[ ].
注意:
- 相邻两个元素用逗号.
- 同一个列表元素类型可不同
name = [] #空列表
name2 = ['哈哈哈',222,[333,'嘎嘎嘎']]
2.创建数值列表
name3 = list(range(10,20,2))
3.访问列表元素
print(name2[2])
4.遍历列表
for item in name2:
print(item)
5.添加,修改和删除列表元素
添加:
name.append('新来的') #在列表的末尾
print(name)
name.extend(name2) #添加新列表
print(name)
修改
name2[1] = '呵呵'
删除
del name2[1] # 根据索引删除
name2.remove('222')
四. 各种矩阵运算
#-*- coding: utf-8 -*-
from numpy import *;#导入numpy的库函数
import numpy as np; #这个方式使用numpy的函数时,需要以np.开头。
# https://www.cnblogs.com/chamie/p/4870078.html
#自己生成行矩阵
aa=matrix([1,2,3])
print(aa)
print(aa[0,1])
#自己生成列矩阵
aaa=matrix([[1],[2],[3]])
print(aaa)
###矩阵a
a=np.floor(10*np.random.rand(2,2))
###a
print(a)
###矩阵b
b=np.floor(10*np.random.rand(2,2))
print(b)
###hstack()在行上合并
c=np.hstack((a,b))
print(c)
####vstack()在列上合并
d=np.vstack((a,b))
print(d)
#### 矩阵乘法
e = aa*aaa
print(e)
# 矩阵的逆
a1=mat(eye(2,2)*0.5)
a2=a1.I #求矩阵matrix([[0.5,0],[0,0.5]])的逆矩阵
print(a2)
#矩阵元素的提取
#矩阵的转置
a2=a1.T
#矩阵的迹
aaa = = matrix([[1,0,0],[0,1,0],[0,0,1]])
trace = np.trace(aaa)
print'矩阵的迹:',trace
五. NumPy 中 ndarray 和 matrix 的区别
import numpy as np
1. 维数限制
matrix 和 ndarray 所能表示的数据维数不同,matrix 只能表示二维数据,而 ndarray 可以表示 N 维数据。
1.1. matrix
matrix 只能是二维,可以使用如下的方法生成两个 2 * 2 的 matrix:
a = np.mat([[1, 2],[3, 4]])
# a = [[1 2]
# [3 4]]
b = np.mat('5 6; 7 8');
# b = [[5 6]
# [7 8]]
如果尝试生成多于二维的矩阵,会产生报错:
c = np.mat([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
# ValueError: matrix must be 2-dimensional
1.2. ndarray
ndarray 可以是 N 维,如使用如下的方法生成两个 2 * 2 的 ndarray:
x = np.array([[1, 2], [3, 4]])
# x = [[1 2]
# [3 4]]
y = np.array([[5, 6], [7, 8]])
# y = [[5 6]
# [7 8]]
可以生成任意维数的 ndarray:
z = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
# z = [[[1 2]
# [3 4]]
#
# [[5 6]
# [7 8]]]
2. 矩阵乘法
matrix 和 ndarray 在进行矩阵乘法时的操作不同。
2.1. matrix
对于 matrix,使用运算符 * 或 NumPy 的 dot() 方法计算矩阵乘法,使用NumPy 的 multiply() 方法计算逐元素相乘。例如对于上面定义的 matrix a 和 b,有:
a * b
# matrix([[19, 22],
# [43, 50]])
np.dot(a, b)
# matrix([[19, 22],
# [43, 50]])
np.multiply(a, b)
# matrix([[ 5, 12],
# [21, 32]])
2.2. ndarray
对于 ndarray,使用 NumPy 或者 ndarray 的 dot() 方法计算矩阵乘法,使用 运算符 * 或 Numpy 的 multiply() 方法计算逐元素相乘。例如对于上面定义的 ndarray x 和 y,有:
x * y
# array([[ 5, 12],
# [21, 32]])
x.dot(y)
# array([[19, 22],
# [43, 50]])
np.dot(x, y)
# array([[19, 22],
# [43, 50]])
此外,从 Python 3.5 和 Numpy 1.10 以后,可以使用中缀操作符 @ 计算 ndarray 间的矩阵乘法,写起来更加方便:
x @ y
# array([[19, 22],
# [43, 50]])
3. 转换
3.1. matrix 到 ndarray
可以使用 matrix 的 A 属性或者 NumPy 的 asarray() 方法,将 matrix 转换为 ndarray。如:
d = a.A
type(d) # numpy.ndarray
e = np.asarray(a)
type(e) # numpy.ndarray
注意上面两个转换方法不会复制数据,如果修改了原始 matrix(即 a),则该修改也会反映到转换后的 ndarray(即 d、e)中,如:
a = np.mat([[1, 2], [3, 4]])
d = a.A
e = np.asarray(a)
print('before change a[0][0]: \nd = \n{}\ne = \n{}'.format(d, e))
a[0][0] = 10
print('\nafter change a[0][0]: \nd = \n{} \ne = \n{}'.format(d, e))
输出为:
before change a[0][0]:
d =
[[1 2]
[3 4]]
e =
[[1 2]
[3 4]]
after change a[0][0]:
d =
[[10 10]
[ 3 4]]
e =
[[10 10]
[ 3 4]]
3.2. ndarray 到 matrix
可以使用 Numpy 的 asmatrix() 将 ndarray 转换为 matrix。如:
z = np.asmatrix(x)
type(z) # numpy.matrixlib.defmatrix.matrix
该转换也不会复制数据,如果修改了原始 ndarray(即 x),则该修改也会反映到转换后的 matrix(即 z)中。
4. 如何选择 ndarray 和 matrix
对于 ndarray 和 matrix 的选择,scipy.org 给出的建议是使用 ndarray,因为:
They are the standard vector/matrix/tensor type of numpy. Many numpy functions return arrays, not matrices.
There is a clear distinction between element-wise operations and linear algebra operations.
You can have standard vectors or row/column vectors if you like.
六、Python 异常处理
1. 异常名称
2. 异常处理
try:
<语句> # 运行可能出错的代码块
except <异常名字>:
<语句> # 如果在try部份引发了'name'异常
except <异常名字> as <数据>:
<语句> # 如果引发了'name'异常,获得附加的数据
else:
<语句> # 如果没有异常发生
finally:
<语句> # 无论有无异常,都会执行
注意:
- 如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印默认的出错信息)。
3.使用raise语句抛出异常
raise语法格式如下:
raise [Exception [, args [, traceback]]]
语句中 Exception 是异常的类型(例如,NameError)参数标准异常中任一种,args 是自已提供的异常参数。
最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。
例子
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 定义函数
def mye( level ):
if level < 1:
raise Exception,"Invalid level!"
# 触发异常后,后面的代码就不会再执行
try:
mye(0) # 触发异常
except Exception,err:
print 1,err
else:
print 2
执行以上代码,输出结果为:
$ python test.py
1 Invalid level!
变量的作用域
1. 局部变量
指在函数内部定义并使用的变量,旨在函数内部有效。在函数运行之前或者运行完毕之后,所有的名字就不存在了。
2.全局变量
(1): 函数定义在函数外,不仅函数外可以访问,函数内部也可以访问。
局部变量与全局变量重名时,对函数体内的变量进行赋值,不影响函数体外的变量。
#-*- coding: utf-8 -*-
message = '阿斯顿法国'
def fun_one():
message = '之前玩儿体育'
print(message)
#~~~~~~~~~~~~~~~~~~~~
fun_one()
print(message)
运行结果:
之前玩儿体育
阿斯顿法国
(2): 在函数体内部定义,使用global 后为全局变量。
1.先在函数体外定义,想在函数体内修改,加global,修改后全局发生变化;
2. 在函数内部定义全局变量,函数体外也可以进行修改;
如何改变文本的样式
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
插入链接与图片
链接: link.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';
生成一个适合你的列表
- 项目
- 项目
- 项目
- 项目
- 项目1
- 项目2
- 项目3
- 计划任务
- 完成任务
创建一个表格
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
设定内容居中、居左、居右
使用:---------:
居中
使用:----------
居左
使用----------:
居右
第一列 | 第二列 | 第三列 |
---|---|---|
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
---|---|---|
Single backticks | 'Isn't this fun?' | ‘Isn’t this fun?’ |
Quotes | "Isn't this fun?" | “Isn’t this fun?” |
Dashes | -- is en-dash, --- is em-dash | – is en-dash, — is em-dash |
创建一个自定义列表
-
Markdown
- Text-to- HTML conversion tool Authors
- John
- Luke
如何创建一个注脚
一个具有注脚的文本。1
注释也是必不可少的
Markdown将文本转换为 HTML。
KaTeX数学公式
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
新的甘特图功能,丰富你的文章
- 关于 甘特图 语法,参考 这儿,
UML 图表
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::
这将产生一个流程图。:
- 关于 Mermaid 语法,参考 这儿,
FLowchart流程图
我们依旧会支持flowchart的流程图:
- 关于 Flowchart流程图 语法,参考 这儿.
导出与导入
导出
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
导入
如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
注脚的解释 ↩︎