Python不仅适用于研究和原型构建,同时也适用于构建生产系统。
对于高并发,多线程的应用程序,Python不是一种理想的编程语言,因为Python有一个叫 全局解释锁 的东西,这是一种防止解释器同时执行多条Python字节码指令的机制。这并不是说Python不能执行真正的多线程并行的代码,只不过这些代码不能在单个Python进程中执行而已。
重要的Python库
NumPy
科学计算的基础包,提供的功能
- 快速高效的多维数组对象ndarray
- 用于对数组执行元素级计算以及对数组执行数学运算的函数
- 用于读写硬盘上基于数组的数据集的工具
- 线性代数运算、 傅里叶变换,以及随机数的生成
- 用于将C、C++、Fortran代码集成到Python的工具
对于大部分数据分析应用而言,功能体现有
- 用于数据整理和清理、子集构造和过滤、转换等快速的矢量化数组运算
- 常用的数组算法,如排序、唯一化、集合运算等
- 高效的描述统计和数据聚合/摘要运行
创建ndarray
使用array函数,接受一切序列化型的对象(包括其他数组),然后产生一个新的含有传入数据的NumPy数组.数据类型保存在一个特殊的dtype对象中
import numpy as np
data1 = [6,7.5,8,0,1]
arr1 = np.array(data1)
print(arr1)
除np.array之外,还有一些函数也可以新建数组。比如zero和ones分别可以创建指定长度或形状的全0或全1数组
print(np.zeros(10))
print(np.ones(10))
ndarray的数据类型
dtype (数据类型 )是一个特殊对象,含有ndarray将一块内存解释为特定数据类型所需的信息
arr1 = np.array(data1,dtype=np.float64)
dtype是Numpy如此强大和灵活的原因之一。多数情况下,它们直接映射到相应的机器表示,这使得“读写磁盘上的二进制数据流”以及“集成低级语言代码(如C、Fortran)”等工作变得简单。数值型dtype的命名方式相同:一个类型名(如float或int),后跟一个表示各元素位长的数字。通过ndarray的astype方法显示地装换其dtype
数组和标量之间的运算
矢量化:用数组表达式代替循环
广播:不同大小的数组之间的运算
布尔型索引
布尔型数组的长度必须跟被索引的轴长度一致,还可以将布尔型数组跟切片、整数(或整数序列)混合使用
names ==