Python和SciPy速成

1.Python速成
1.1基本数据类型和赋值运算
字符串

#字符串
data = 'Hello world!'
print(data[0])
print(data[1:5])
print(len(data))
print(data)

空值
  在Python中,每一种数据类型都是对象,空值是Python中的一个特殊值,用None表示,表示该值是一个空对象。可以将None赋值给任何变量,也可以将任何变量赋值给一个None值的对象。

a=None
b=a
print(a)
print(b)

1.2复杂数据类型
  Python中有三种数据类型经常被用到,且非常有用。分别为元组,列表和字典。

  元组是一个只读的集合类型,初始化后,元组的元素不能重新赋值。

#元组
a=(1,2,3)
print(a)
print(a[1])

  列表与元组类似,只是列表通过中括号定义,而且列表的元素可以重新赋值。对列表增加列表项使用列表的append()函数。

#列表
a=[1,2,3]
print(a)
a.append(4)
print(a)
a[2]=5
print(a)
for i in a:
   print(i)

  字典是另一种可变容器模型,且可存储任意类型的对象。字典的每个键值对(key,value)用冒号(:)分隔,每个键值对之间用逗号(,)分隔,整个字典包括在花括号({})中。

#字典
mydict['a']=523
print('A value: %d' % mydict['a'])
print('keys: %s' % mydict.keys())
print('values: %s' % mydict.values())
for key in mydict:
   print(mydict[key])

  删除字典中的全部元素,使用字典自身的clear()方法,若删除字典特定的key元素,用pop(key)方法

mydict.pop('a')
print(mydict)
mydict.clear()
print(mydict)

  函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段。函数能提高应用的模块性和代码的重复利用率。自定义函数需要遵循以下几个简单的规则:
  1.函数代码块以def关键词开头,后接函数标识符名称和圆括号()。
  2.任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定于参数。
  3.函数的第一行语句可以选择性地使用文档字符串,用于存放函数说明。
  4.函数内容以冒号起始,并且缩进。
  5.用return[表达式]结束函数,选择性地返回一个值给调用方。不带表达式地return相当于返回None。

  with语句与上下文管理器关系密切。下面是一组与上下文管理器和with语句有关的概念。
  上下文管理协议(Context Management Protocol):包含方法enter()和exit(),支持该协议地对象要实现这两个方法。
  上下文管理器(Context Manager):支持上下文管理协议地对象,这种对象实现了enter()和exit()方法。上下文管理器定义执行with语句时要建立的运行时的上下文,负责执行with语句块上下文中的进入与退出操作。通常使用with语句调用上下文管理器,也可以通过直接调用其方法来使用。
  运行时上下文(Runtime Context):由上下文管理器创建,通过上下文管理器的enter()和exit()方法实现。enter()方法在语句体执行之前进入运行时上下文,exit()方法在语句体执行完毕后从运行时上下文退出。with语句支持运行时上下文这一概念。
  上下文表达式(Context Expression):with语句中跟在关键字with之后的表达式,该表达式要返回一个上下文管理器对象。
  语句体(with-body):with语句包裹起来的代码块,在执行语句体之前会调用上下文管理器的enter()方法,执行完语句体之后会执行exit()方法。
  Python对一些内建对象进行改进,加入了对上下文管理器的支持,可以用于with语句中,比如可以自动关闭文件,线程锁的自动获取和释放等。假如要对一个文件进行操作,可以使用with语句,代码如下:

with open('somefileName') as somefile:
     for line in somefile:
         print(line)

  这里使用了with语句,不管在处理文件过程中是否发生异常,都能保证with语句执行完毕后关闭了打开的文件句柄。使用with语句,简化了对异常的处理。因此,当需要对异常进行处理的时候,如果对象遵循了上下文管理协议,建议使用with语句来实现。

2.Numpy速成

#创建数组
import numpy as np
myarray = np.array([1,2,3])
print(myarray)
print(myarray.shape)
myarrays=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(myarrays)
print(myarrays.shape)
#访问数据
import numpy as np
myarray = np.array([1,2,3])
print(myarray)
print(myarray.shape)
myarrays=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(myarrays)
print(myarrays.shape)
myarray2 = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(myarray2)
print(myarray2.shape)
print('这是第一行: %s' % myarray2[0])
print('这是最后一行: %s' % myarray2[-1])
print('访问整列(3列)数据 : %s' % myarray2[:,2])
print('访问指定行(2行)和列(3列)的数据 : %s' % myarray2[1,2])
#算术运算
import numpy as np
myarray1 = np.array([[1,2,3],[4,5,6],[7,8,9]])
myarray2 = np.array([[11,21,31],[21,32,42],[33,13,23]])
print(myarray1 + myarray2)
print(myarray1*myarray2)

3.Matplotlib速成
  Matplotlib操作步骤如下:
  1.调用plot(),scatter()等方法,并为绘图填充数据。数据是Numpy的ndarray类型的对象。
  2.设定数据标签,使用xlabel(),ylabel()方法。
  3.展示绘图结果,使用show()方法。

#绘制线条图
import matplotlib.pyplot as plt
import numpy as np
myarray = np.array([[1,2,3],[2,3,4],[3,4,5]])
plt.plot(myarray)
#设定x轴和y轴
plt.xlabel('x axis')
plt.ylabel('y axis')
plt.show()
#散点图
myarray1 = np.array([1,2,3])
myarray2 = np.array([11,21,31])
plt.scatter(myarray1,myarray2)
plt.xlabel('x axis')
plt.ylabel('y axis')
plt.show()

4.Pandas速成
Pandas提供了用于机器学习的复杂数据类型:矢量运算方法和数据分析方法。Pandas也提供了多种数据结构:
1.Series:一维数组,与Numpy中的一维Array类似。二者与Python基本的数据结构List也很相近,其区别是:List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效地使用内存,提高运算效率。
2.Time-Series:以时间为索引的Series。
3.DataFrame:二维的表格型数据结构。很多功能与R语言中的data.frame类似。可以将DataFrame理解为Series的容器。
4.Panel:三维数组,可以理解为DataFrame的容器

Series虽然与Numpy的一维数组类似,但是在建立Series时可以设定Index,也可以像访问Numpy数组或字典一样来访问Series元素。

import numpy as np
import pandas as pd
myarray = np.array([1,2,3])
index = ['a','b','c']
myseries = pd.Series(myarray,index=index)
print(myseries)
print(myseries[0])
print(myseries['c'])

DataFrame是一个可以指定行和列标签的二维数组。数据可以通过列名来访问特定列的数据。

myarray = np.array([[1,2,3],[2,3,4],[3,4,5]])
rowindex = ['row1','row2','row3']
colname = ['col1','col2','col3']
mydataframe = pd.DataFrame(data=myarray,index=rowindex,columns=colname)
print(mydataframe)
print(mydataframe['col3'])

猜你喜欢

转载自blog.csdn.net/heloiselt/article/details/80653198