python+numpy教程

参考资料:

1.http://cs231n.github.io/python-numpy-tutorial/

2.https://docs.python.org/3.5/library/stdtypes.html#sequence-types-list-tuple-range

3.https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000


使用的python版本号:python 3.4.3


Python

首先通过快速排序,感受python语句的简洁性:

python+numpy教程

关于快速排序可查看我之前的博文:http://blog.****.net/u014485485/article/details/78264015


基本数据类型:integers, floats, booleans, and strings

python+numpy教程

python+numpy教程

注意:没有x++,x--


逻辑操作符,用英文表示:

python+numpy教程


字符串操作:

python+numpy教程


Lists:

Lists are mutable sequences, typically used to store collections of homogeneous items

python+numpy教程

slicing

python+numpy教程


loop

python+numpy教程

用enumerate得到索引:

python+numpy教程

批量操作数据:

python+numpy教程

或者简化写为

python+numpy教程

也可以对数据进行条件筛选:

python+numpy教程


Dictionaries

储存形如(key,value)的数据

python+numpy教程

in 用于判断:

python+numpy教程

Dictionaries的迭代:

python+numpy教程


Sets

set object is an unordered collection of distinct hashable objects.

python+numpy教程

set的迭代:

python+numpy教程


Tuples

Tuples are immutable sequences, typically used to store collections of heterogeneous data .

python+numpy教程

没有add,remove方法


Functions

def 函数名(参数):


Classes

python+numpy教程


Numpy

提供对多维数组的操作和运算。

python+numpy教程


创建数组:

python+numpy教程


index操作:

python+numpy教程


python+numpy教程


python+numpy教程


Array math

python+numpy教程

Broadcasting

如果你想把两个结构不一样的数组相加,可以扩展:

python+numpy教程

当数组较大时不使用循环:

python+numpy教程


而numpy可以做到不产生中间数据vv:

python+numpy教程

再比如:

python+numpy教程


SciPy(pronounced “Sigh Pie”

SciPy builds on this, and provides a large number of functions that operate on numpy arrays。

可以对图像进行操作。


Image operations

python+numpy教程

python+numpy教程

Distance between points

python+numpy教程

距离参数含义在此查找:https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.pdist.html

常用的:

python+numpy教程

Matplotlib

Plotting

python+numpy教程


python+numpy教程


Subplots

python+numpy教程


Images

python+numpy教程


python3的一些特性

1.print()会依次打印每个字符串,遇到逗号“,”会输出一个空格

2.如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用'''...'''的格式表示多行内容

3.

Python的整数没有大小限制,而某些语言的整数根据其存储长度是有大小限制的,例如Java对32位整数的范围限制在-2147483648-2147483647

Python的浮点数也没有大小限制,但是超出一定范围就直接表示为inf(无限大)。
4.
在最新的Python 3版本中,字符串是以Unicode编码的。
当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。
当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
实际上Python是用这个正则表达式提取编码,coding[:=]\s*([-\w.]+)
所以以下都可以 :
# coding:utf-8
# coding=utf-8
5.
list用方括号[ ],tuple用圆括号( ),dict用大括号{ }。tuple和list非常类似,但是tuple一旦初始化就不能修改。
如果要定义一个空的tuple,可以写成()
>>> t = ()
>>> t
dict里key是唯一的,不可变的(字符串,整数),添加一个相同的key之前的会被覆盖,查看key是否存在的方法:1....in...  2.get()
删除:pop() 。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()
s=set([1,2,3])  set要借助list来创建  添加add();删除remove()
6.
列表生成式List Comprehensions L = [x * x for x in range(10)]
生成器generator:g = (x * x for x in range(10))   将方括号改成圆括号。
如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator。变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。我们基本上从来不会用next()来获取下一个返回值,而是直接使用for循环来迭代
def fib(max):
n, a, b = 0, 0, 1
while n < max:
yield b
a, b = b, a + b
n = n + 1
return 'done'
7.
可以直接作用于for循环的对象统称为可迭代对象:Iterable   判断用 isinstance(...,Iterable
一类是集合数据类型,如listtupledictsetstr等;
一类是generator,包括生成器和带yield的generator function。
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator 判断用 isinstance(...,Iterator)
生成器都是Iterator对象,但listdictstr虽然是Iterable,却不是Iterator
listdictstrIterable变成Iterator可以使用iter()函数
这是因为Python的Iterator对象表示的是一个数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration错误。
8.
module:任何模块代码的第一个字符串都被视为模块的文档注释;
if __name__=='__main__':
test()
当我们在命令行运行hello模块文件时,Python解释器把一个特殊变量__name__置为__main__,而如果在其他地方导入该hello模块时,if判断将失败,因此,这种if测试可以让一个模块通过命令行运行时执行一些额外的代码,最常见的就是运行测试。
注:在命令行运行时会运行if下的语句,在交互环境里import时则并不会执行if下面的语句
9.
类似_xxx__xxx这样的函数或变量就是非公开的(private),不应该被直接引用。以两个下划线开头的实例变量名,比如__name,这样的实例变量外部是不可以访问的(也不是绝对的)。有些时候,你会看到以一个下划线开头的实例变量名,比如_name,这样的实例变量外部是可以访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问”。