赞
踩
Python是一门解释型的高级编程语言,特点是简单明确。Python作者是荷兰人Guido van Rossum, 介于C和Shell之间,同时吸取ABC语法中的优点语言专家Bruce Eckel的那句名言:Life is short, you need Python. 后来这句话的中文版“人生苦短,我用Python”被Guido印在了T恤上。Python拥有很好的扩充性,可以非常轻松地用其他语言编写模块供调用,用Python编写的模块也可以通过各种方式轻松被其他语言调用。所以一种常见的Python使用方式是,底层复杂且对效率要求高的模块用C/C++等语言实现,顶层调用的API用Python封装,这样可以通过简单的语法实现顶层逻辑,故而Python又被称为“胶水语言”。
Python中最基本的数据类型包括整型,浮点数,布尔值和字符串。类型是不需要声明的
#是行内注释。
type函数可以查看一个变量的类型
a赋值为1后,b=a执行时并不会将a的值复制一遍,然后赋给b,而是简单地为a所指的值,也就是1建立了一个引用,相当于a和b都是指向包含1这个值的这块内存的指针。id函数可以让我们知道每个变量指向的是不是同一个值
符串用双引号和单引号都可以,区别主要是单引号字符串中如果出现单引号字符则需要用转义符,双引号也是一样,所以在单引号字符串中使用双引号,或者双引号字符串中使用单引号就会比较方便。另外三个双引号或者三个单引号围起来的也是字符串,因为换行方便,更多用于文档。
字符串前加r表示字符串内容严格按照输入的样子,好处是不用转义符了,非常方便。
Python2中两个数值相除会根据数值类型判断是否整数除法,Python3种则都按照浮点数。
python乘方,它是“ ** ”(第三阶运算)
位操作 ( &,|,~,^,<<,>>
a = 2 b = 2.3 c = 3 a + b # 2 + 2.3 = 4.3 c – a # 3 - 2 = 1 a / b # 整数除以浮点数,运算以浮点数为准,2 / 2.3 = 0.8695652173913044 a / c # Python2中,整数除法,向下取整 2 / 3 = 0 a ** c # a的c次方,结果为8 a += 1 # Python中没有i++的用法,自增用+= c -= 3 # c变成0了 d = 'Hello' d + ' world!' # 相当于字符串拼接,结果为'Hello world!' d += ' "world"!'# 相当于把字符串接在当前字符串尾,d变为'Hello "world"!' e = r'\n\t\\' print(e) # '\\n\\t\\\\' a = True b = False a and b # False a or b # True not a # False ~8 # 按位翻转,1000 --> -(1000+1) 8 >> 3 # 右移3位,1000 --> 0001 1 << 3 # 左移3位,0001 --> 1000 5 & 2 # 按位与,101 & 010 = 000 5 | 2 # 按位或,101 | 010 = 111 4 ^ 1 # 按位异或,100 ^ 001 = 101 a = 1 b = 1.0 c = 1 a == b # True,值相等 a is b # False,指向的不是一个对象,这个语句等效于 id(a) == id(b) a is c # True,指向的都是整型值1
Python使用NumPy包完成了对N-维数组的快速便捷操作。使用这个包,需要导入numpy。SciPy包以NumPy包为基础,大大的扩展了numpy的能力。为了使用的方便,scipy包在最外层名字空间中包括了所有的numpy内容,因此只要导入了scipy,不必在单独导入numpy了!
Import numpy as np
Import scipy as sp
下面简要介绍Python和MATLAB处理数学问题的几个不同点。
[[0 for col in range(cols)] for row in range(rows)]
python 的向量反转有一个很简单的办法
b=a[::-1]
b== np.flipud(ini_array)
1、list变array:np.array(list)
2、array变list:data.tolist()
3、array与matrix相互转化:np.asmatrix和np.asarray()
4、list变matrix:np.mat(list)
两个list中对应元素相加
l5 = [a + b for a,b in zip(l1, l2)] # 数值相加
array是可以直接四则运算
a2=np.array([[1,2,3],[2,3,4]]) #建立一个二维数组。此处和MATLAB的二维数组(矩阵)的建立有很大差别。
c1=np.arange(2,3,0.1) #起点,终点,步长值。含起点值,不含终点值。
c2=np.linspace(1,4,10) #起点,终点,区间内点数。起点终点均包括在内。同理,有logspace()函数
d1=np.linalg.companion(a) #伴随矩阵
d2=np.linalg.triu()/tril() #作用同MATLAB中的同名函数
e1=np.random.rand(3,2) #产生一个3行2列的随机数组。同一空间下,有randn()/randint()等多个随机函数
fliplr()/flipud()/rot90() #功能类似MATLAB同名函数。
xx=np.roll(x,2) #roll()是循环移位函数。此调用表示向右循环移动2位。
4.矩阵运算
np.dot(a,b)用来计算数组的点积;vdot(a,b)专门计算矢量的点积,和dot()的区别在于对complex数据类型的处理不一样;innner(a,b)用来计算内积;outer(a,b)计算外积。
5 Help
help(np.array) #查看关于array的帮助信息
help(np.add) #查看关于add的帮助信息
6 内置基础数学库
import math
print(math.cos(math.pi))
from math import cos, pi
print(cos(pi))
import math as m
print(m.cos(m.pi))
from math import *
列表的基本操作有访问,增加,删除,和拼接:
a.pop() # 把最后一个值4从列表中移除并作为pop的返回值 a.append(5) # 末尾插入值,[1, 2, 3, 5] a.index(2) # 找到第一个2所在的位置,也就是1 a[2] # 取下标,也就是位置在2的值,也就是第三个值3 a += [4, 3, 2] # 拼接,[1, 2, 3, 5, 4, 3, 2] a.insert(1, 0) # 在下标为1处插入元素0,[1, 0, 2, 3, 5, 4, 3, 2] a.remove(2) # 移除第一个2,[1, 0, 3, 5, 4, 3, 2] a.reverse() # 倒序,a变为[2, 3, 4, 5, 3, 0, 1] a[3] = 9 # 指定下标处赋值,[2, 3, 4, 9, 3, 0, 1] b = a[2:5] # 取下标2开始到5之前的子序列,[4, 9, 3] c = a[2:-2] # 下标也可以倒着数,方便算不过来的人,[4, 9, 3] d = a[2:] # 取下标2开始到结尾的子序列,[4, 9, 3, 0, 1] e = a[:5] # 取开始到下标5之前的子序列,[2, 3, 4, 9, 3] f = a[:] # 取从开头到最后的整个子序列,相当于值拷贝,[2, 3, 4, 9, 3, 0, 1] a[2:-2] = [1, 2, 3] # 赋值也可以按照一段来,[2, 3, 1, 2, 3, 0, 1] g = a[::-1] # 也是倒序,通过slicing实现并赋值,效率略低于reverse() a.sort() print(a) # 列表内排序,a变为[0, 1, 1, 2, 2, 3, 3]
for循环
强行缩进来表明成块的代码
for i in xrange(len(words)):
print(words[i])
if和分支结构
if pet == 'dog': # 狗粮
food = 'steak' # 牛排
elif pet == 'fly': # 苍蝇
food = 'sh*t' #
else:
pass
函数
def say_hello():
print('Hello!')
np.abs(arr) #abs,fabs 计算整数、浮点数或者复数的绝对值,对于非复数,可以使用更快的fabs
np.sqrt(arr) #计算各个元素的平方根
np.square(arr) #计算各个元素的平方
np.exp(arr) #计算各个元素的指数e的x次方
np.log(arr)
np.log2(arr)
np.log1p(arr) #分别计算自然对数、底数为2的log以及底数为e的log(1+x)
np.sign(arr) #计算各个元素的正负号: 1 正数,0:零,-1:负数
np.ceil(arr) #向上取整
np.floor(arr) #向下取整
np.rint(arr) #四舍五入
np.var( arr ) #求该arr方差 ,所有元素
np.unique(arr) #去除重复元素
字符串
a = 'Life is short, you need Python'
a.lower() # 'life is short, you need Python'
a.upper() # 'LIFE IS SHORT, YOU NEED PYTHON'
a.count('i') # 2
a.find('e') # 从左向右查找'e',3
a.rfind('need') # 从右向左查找'need',19
a.replace('you', 'I') # 'Life is short, I need Python'
tokens = a.split() # ['Life', 'is', 'short,', 'you', 'need', 'Python']
b = ' '.join(tokens) # 用指定分隔符按顺序把字符串列表组合成新字符串
c = a + '\n' # 加了换行符,注意+用法是字符串作为序列的用法
c.rstrip() # 右侧去除换行符
[x for x in a] # 遍历每个字符并生成由所有字符按顺序构成的列表
'Python' in a # True
文件操作
f = open(r"G:\6Tipdm\file_read_write\yesterday.txt","r+",encoding="utf-8")
data = f.read()
print(data[:245])
f.close()
f = open(r"G:\6Tipdm\file_read_write\yesterday2.txt","w+",encoding="utf-8")
f.write("我爱北京天安门")
f.close()
str() 将数字包住file.write(str(12));
print >> fd,可以直接输入int类型
# 使用子图
plt.figure()
plt.suptitle('Total title', size=16) # 整张图的总标题
x = np.linspace(0, 2 * np.pi, 50)
plt.subplot(2, 1, 1) # (行,列,活跃区)
plt.title('subplot 1') # 子图的小标题
plt.plot(x, np.sin(x), 'r')
plt.subplot(2, 1, 2)
plt.title('subplot 2') # 子图的小标题
plt.plot(x, np.cos(x), 'g')
plt.show()
python代码换行就是每行后面加个 \
嵌套的python list转成一个一维的python list
x = [[2],[23],[3]]
y = sum(x,[])
lst2=[x+y for x in range(10) if x>5 for y in range(10) if y<5 ]
list2=[[ y[x] for y in list ] for x in range(4)]#使用复杂推导式将数组转置
y='{:.5f}'.format(x) # 5f表示保留5位小数点的float型
Cm_p_i = []
for x in C:
if type(x) is np.ndarray:
C_i.append('{:.2g}'.format(x[0][0]))
else:
C_i.append('{:.2g}'.format(x))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。