低智商的善良,不如高智商的冷漠——这是一个让人恶心的坏命题。是的,面对复杂的世事,我们需要判断力,爱心拒绝被消费,但不是让你对苦难无所作为无动于衷,不是让你失去同情悲悯之心。应该批判的是说谎者,而不是把矛头指向人们单纯的善良。欺骗应受惩罚,不能因为欺骗就给自己的冷漠找到冠冕堂皇的借口,无论如何不能失去善良的能力。 《中国青年报》
扁平结构要比嵌套结构好。——Zen of Python
Python重要库的中文文档地址:《一译中文文档》
如何使用pip安装特定版本的python第三方包
pip install package==version
#package:包名;version:版本号。如pip install tensorflow-gpu==1.4.0即是安装1.4.0版本的gpu版本的tensorflow
精通面向数组编程和思维方式是成为Python科学计算大牛的一大关键步骤。——《利用Python进行数据分析》
Numpy(Numerical Python)是Python科学计算的基础包。具有以下功能:
Numpy数组在存储和处理数据要比内置的Python数据结构高效得多。此外,由低级语言(比如C和Fortran)编写的库可以直接操作Numpy数组中的数据,无需进行任何数据复制工作。
python -c "import numpy; print numpy.version.version"
数组创建函数列表:
函数名 | 说明 |
---|---|
zeros | 创建指定长度或形状全为0的数组。 |
ones | 创建指定长度或者形状全为1的数组。 |
empty | 创建一个没有任何具体值的数组。 |
arange | 是基于Python原版range函数改进的数组版本。 |
array | 将输入的数据(可以是列表、元组、数组、其他的序列数组)转换为Numpy的ndarray。要是不指定dtype,那么就由该方法推断出dtype。默认直接复制数据。 |
asarray | 将输入的数据转换为Numpy的ndarray。如果输入本身是ndarray就不进行复制操作了。 |
eye | 创建一个N×N的单位矩阵,主对角线为1,其余为0。 |
identity | 创建一个N×N的单位矩阵,主对角线为1,其余为0。 |
函数名称 | 说明 |
---|---|
abs | 计算整数、浮点数或者是复数的绝对值。 |
fabs | 计算整数、浮点数的绝对值(比abs快)。 |
sqrt | 计算各个元素的平方根,相当于arr**0.5。 |
square | 计算各个元素的平方,相当于arr**2。 |
exp | 计算各个元素的指数e*。 |
log | 自然对数。 |
log10 | 底数为10的对数。 |
log2 | 底数为2的对数。 |
log1p | 底数为(1+x)的对数。 |
sign | 计算各个元素的正负号:1(正数)、-1(负数)、0(零)。 |
ceil | 计算各元素的ceiling值,即大于等于该值的最小正数。 |
floor | 计算个元素的floor值,即小于等于该值的最大正数。 |
rint | 将个元素四舍五入到最接近的整数,保留dtype。 |
modf | 将数组的小数和整数部分以两个独立数组的形式返回。 |
isnan | 返回一个表示“哪些值是NaN(这不是一个数字)”的布尔值类型。 |
isfinite | 返回一个表示“哪些元素是有穷的(非inf,非NaN)”的布尔值数组。 |
isinf | 返回一个表示“哪些元素是无穷的”的布尔值数组。 |
cos、sin、tan | 三角函数。 |
cosh、sinh、tanh | 双曲型三角函数。 |
arccos、arcsin、arctan | 反三角函数。 |
arccosh、arcsinh、arctanh | 双曲型反三角函数。 |
logical_not | 计算各个元素not x 的真值,相当于-arr。 |
not a number
,即非数字。函数名称 | 说明 |
---|---|
add | 将数组中对应的元素相加。 |
subtract | 从第一个数组中减去第二个数组中元素。 |
multiply | 数组元素相乘。 |
divide | 除法。 |
floor_divide | 向下取整除法。 |
power | 对第一个数组中的元素A,根据第二个数组中的相应元素B,计算A^B的值。 |
maxmum | 取最大值。 |
fmax | 除NaN外的最大值。 |
minimum | 取最小值。 |
fmin | 除NaN外的最小值。 |
mod | 取余数。 |
copysign | 将第二个数组中的值的符号复制给第一个数组中的值。 |
greater | 大于。 |
greater_equal | 大于等于。 |
less | 小于。 |
less_equal | 小于等于。 |
equal | 等于。 |
not_equal | 不等于。 |
logical_and | 逻辑与(&)。 |
logical_or | 逻辑或(|)。 |
logical_xor | 逻辑异或(^)。 |
名称 | 说明 |
---|---|
sum | 对数组中全部或者是某个轴向的所有元素进行求和。零长度的数组的sum值为0。 |
mean | 算术平均值。零长度的数组的mean值为NaN。 |
std | 标准差。 自由度可调整(默认为n)。 |
var | 方差。 自由度可调整(默认为n)。 |
min | 返回数组中的最小元素。 |
max | 返回数组中的最大元素。 |
argmin | 返回数组中最小元素的索引。 |
argmax | 返回数组中最大元素的索引。 |
median | 返回数组的中位值。 注意,该方法不会对数组进行排序。 数组个数为奇数个返回最中间一个数字,偶数个返回最中间两位的均值。 |
ravel | 将多维数组展平多一维数组。 |
cov | 协方差。 |
名称 | 说明 |
---|---|
any | 数组中是否存在一个或者多个True。 如果存在就返回True,反之,返回False。 |
all | 数组中是否全部为True。 如果所有数组中所有元素都是True就返回True,反之,返回False。 |
名称 | 说明 |
---|---|
unique(x) | 有序返回x中所有的唯一元素。 |
intersect1d(x, y) | 有序返回x和y中的公共元素。 |
union1d(x, y) | 有序返回x和y的并集。 |
in1d(x, y) | 返回一个表示“x的元素是否包含于y”的布尔型数组。存在用True表示,不存在用False表示。 |
setdiff1d(x, y) | 返回存在于x但是不存在于y的集合差。 |
setxor1d(x, y) | 返回存在于一个数组中但是不同时存在于两个数组中的元素的对称差集合。 |
名称 | 说明 |
---|---|
searchsorted | searchsorted函数为指定的插入值返回一个在有序数组中的索引位置,从这个位置插入可以保持数组的有序性。 |
extract | 从数组中抽取元素。 |
cumsum | 所有元素的累计和。 |
cumprod | 所有元素的累计积。 |
名称 | 说明 |
---|---|
mat | 创建一个矩阵。 注意:mat函数创建矩阵时,若输入已为matrix或ndarray对象,则不会为它们创建副本。因此,调用mat函数和调用matrix(data, copy=False)等价。 |
T | 转置。mat.T |
I | 逆矩阵。mat.I |
bmat | 分块矩阵,可以用小的矩阵来创建大的矩阵。矩阵A,矩阵B,矩阵C,C=bmat("A B;B A") |
线性代数是数学的一个重要分支。numpy.linalg
模块包含线性代数的函数。使用这个模块,我们可以计算逆矩阵、求特征值、解线性方程组以及求解行列式等。
名称 | 说明 |
---|---|
dot | 矩阵乘法。 用法:x.dot(y) 或者是np.dot(x, y) |
diag | 以一维数组的形式返回方阵中的对角线(或者非对角线)元素,或将一维数组转换为方针(非对角线元素为0)。 |
trace | 计算对角线元素的和。 |
det | 计算矩阵行列式。 |
eig | 计算矩阵的本征值和本征向量。 |
inv | 计算矩阵的逆,即求逆矩阵。 |
pinv | 计算矩阵的Moore-Penrose伪逆。 |
qr | 计算QR分解。 |
svd | 计算奇异值分解(SVD)。 |
solve | 解线性方程组Ax=b,其中A是一个方阵。 |
lstsq | 计算Ax=b的最小二乘积。 |
这些是numpy.random的函数:
名称 | 说明 |
---|---|
seed | 确定随机数生成器的种子。 |
permutation | 返回一个序列的随机排列或返回一个随机排列的范围。 |
shuffle | 对一个序列就地随机排序。 |
rand | 产生均匀分布的样本值。 |
randint | 从给定的上下限范围内随机选取整数。 |
randn | 产生正态分布(平均值为0,标准差为1)的样本值,类似于MATLAB接口。 |
binomial | 产生二项分布的样本值。 |
normal | 产生正态(高斯)分布的样本值。 |
beta | 产生Beta分布的样本值。 |
chisquare | 产生卡方分布的样本值。 |
gamma | 产生Gamma分布的样本值。 |
uniform | 产生[01)中均匀分布的样本值。 |
名称 | 说明 |
---|---|
sort | 函数返回排序后的数组。 |
lexsort | 函数根据键值的字典序进行排序。 |
argsort | 函数返回输入数组排序后的下标。 |
名称 | 说明 |
---|---|
sort | 函数可对数组进行原地排序。 |
msort | 函数沿着第一个轴排序。 |
sort_complex | 函数对复数按照先实部后虚部的顺序进行排序。 |
名称 | 说明 |
---|---|
fv | 函数计算所谓的终值(future value),即基于一些假设给出的某个金融资产在未来某一时间点的价值。 |
pv | 函数计算现值(present value),即金融资产当前的价值。 |
npv | 函数返回的是净现值(net present value),即按折现率计算的净现金流之和。 |
pmt | 函数根据本金和利率计算每期需支付的金额。 |
irr | 函数计算内部收益率(internal rate of return)。 内部收益率是是净现值为0时的有效利率,不考虑通胀因素。 |
mirr | 函数计算修正后内部收益率(modified internal rate of return),是内部收益率的改进版本。 |
nper | 函数计算定期付款的期数。 |
Pandas(Python Data Analysis Library)是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的(让以Numpy为中心的应用变得更加简单)。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。
数据结构 | 说明 |
---|---|
Series | 一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近,其区别是:List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。 如果传入的数据找不到对应的列,就将结果置为NaN。 |
Time- Series | 以时间为索引的Series。 |
DataFrame | 二维的表格型数据结构。很多功能与R中的data.frame类似。可以将DataFrame理解为Series的容器。以下的内容主要以DataFrame为主。 如果传入的列在数据中找不到,就会产生NA值。 如果赋值是一个Series,就会精确匹配DataFrame中的索引,并且所有的空位都会被填充NaN。 |
Panel | 三维的数组,可以理解为DataFrame的容器。 |
Pandas兼具Numpy高性能的数组计算功能以及电子表格和关系型数据库(如SQL)灵活的数据处理功能。它提供了复杂精细的索引功能,以便更为便捷地完成重塑、切片和切块、聚合以及选取数据子集等操作。
Series的字符串的表现形式为:索引在左边,值在右边。
Series的最重要的一个功能就是它在算术运算中会自动对齐不同索引的数据。
Series的索引切片和原Python的切片是不一样的,这里的test['a':'c']
中ac都是包含的,而原Python中的切片中c
是不包含的。
DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等等)。
DataFrame可以既有行索引又有列索引,他可以被看做是由Series组成的字典(共用同一个索引)。跟其他类似的数据结构相比(如R的data.frame),DataFrame中面向行和面向列的操作基本上是平衡的。其实,DataFrame中的数据是以一个或者多个二维块存放的(而不是列表、字典或者是别的一维数据结构)。
注意:虽然DataFrame是以二维结构保存数据的,但你仍然可以轻松地将其表示为更高维度的数据(层次化索引的表格型结构,这是Pandas中许多高级数据处理功能的关键要素)。
我们可以通过类似字典标记的方式或者属性的方式,获取DataFrame中的一个Series,比如frame['name']
这种形式。
注意:返回的Series拥有原DataFrame相同的索引,且其name属性也已经被相应的设置好了。行也可以通过位置或者名称的方式进行获取,比如用索引字段ix。
注意:通过索引方式返回的列只是相应数据的视图而已,并不是副本。因此,对返回的Series所做的任何修改全部都会反映到源DataFrame上。通过Series的copy方法即可显式地复制列。
名称 | 说明 |
---|---|
append | 连接另一个Index对象,产生一个新的Index。 |
diff | 计算差集,并得到一个Index。 |
intersection | 计算交集。 |
union | 计算并集。 |
delete | 删除索引i处的元素,并得到新的Index。 |
drop | 删除传入的值,并得到新的Index。 |
insert | 将元素插入到索引i处,并得到新的Index。 |
is_monotonic | 当各个元素大于等于前一个元素的时候,返回True。 |
is_unique | 当Index唯一的时候,返回True。 |
unique | 返回在数组中Index唯一的元素构成的数组。 |
参数 | 说明 |
---|---|
index | 用作索引的新序列。既可以是Index实例,也可以是其他序列型的Python数据结构。Index会被完全使用,就像没有任何复制一样。 |
method | 插值(填充)方式,具体参数见下面表格。 |
fill_value | 在重新索引的过程中,需要引入缺失值是使用的替代值。 |
limit | 前向或者后向填充时的最大填充量。 |
level | 在MultiIndex的指定级别上匹配简单索引,否则选取其子集。 |
copy | 无论如何复制,默认为True;如果是False,则新旧相等的话就不复制了。 |
参数 | 说明 |
---|---|
ffill | 前向填充值。 |
pad | 前向搬运值。 |
bfill | 后向填充值。 |
backfill | 后向搬运值。 |
方法 | 说明 |
---|---|
add | 加法 |
sub | 减法 |
div | 除法 |
mul | 乘法 |
选项 | 说明 |
---|---|
axis | 约简的轴。DataFrame的行用0表示,列用1表示。 |
skipna | 排除缺失值,默认值为True。 |
level | 如果轴是层次化索引的(即MultiIndex),则根据level分组约简。 |
方法 | 说明 |
---|---|
count | 非NA值的数量。 |
describe | 针对Series或者各个DataFrame列计算汇总统计。 |
min | 最小值。 |
max | 最大值。 |
argmin | 计算能够获取到最小值的索引位置。(整数) |
argmax | 计算能够获取到最大值的索引位置。(整数) |
idxmin | 计算能够获取到最小值的索引值。 |
idxmax | 计算能够获取到最大值的索引值。 |
quantile | 计算样本的分位数(0到1)。 |
sum | 值的总和。布尔值会被强制转换为1(True)和0(False)。 |
mean | 值的平均值。 |
median | 值的算术中位数。(50%中位数) |
mad | 根据平均值计算平均绝对离差。 | |
var | 样本值的方差。 |
std | 样本值的标准差。 |
skew | 样本值的偏度(三阶矩)。 |
kurt | 样本值的峰度(四阶矩)。 |
cumsum | 样本值的累积和。布尔值会被强制转换为1(True)和0(False)。 |
cummin | 样本值的累计最大值。 布尔值会被强制转换为1(True)和0(False)。 |
cummax | 样本值的累计最小值。布尔值会被强制转换为1(True)和0(False)。 |
cumprod | 样本值的累计积。布尔值会被强制转换为1(True)和0(False)。 |
diff | 计算一阶差分(对时间序列很有用)。 |
pct_change | 计算百分数变化。 |
方法 | 说明 |
---|---|
dropma | 根据各个标签中是否存在缺失数据对轴标签进行过滤,可通过阀值调节对缺失值的容忍度。 在DataFrame中,dropna默认丢弃任何含有缺失值的行。 |
fillna | 用指定值或者插值方法(如ffill或者是bfill)填充缺失数据。使用方法:fillna(0) 。fillna默认返回新的对象,但也可以对现有对象进行就地修改(使用参数inplace=True)。 |
isnull | 返回一个含有布尔值的对象,这些布尔值表示哪些值是缺失值NA,该对象的类型与源类型一样。 |
notnull | isnull的否定式。 |
以下将文本数据转换为DataFrame时所用到的一些技术,这些函数的选项可以分为以下的几个大类:
索引:将一个或者多个列当做返回的DataFrame处理,以及是否从文件、用户获取列名。
类型推断和数据转换:包括用户定义值的转换、缺失值标记列表等等。
日期解析:包括组合功能,比如将分散在多个列中的日期时间信息组合成结果中的单个列。
不规整数据问题:跳过一些行、页脚、注释或者其他不重要的东西(比如由成千上万个逗号隔开的数值数据)。
函数 | 说明 |
---|---|
read_csv | 从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符是逗号。 |
read_table | 从文件、URL、文件型文件中加载带分隔符的数据。默认分隔符是制表符(’\t’)。 |
read_fwf | 读取定宽格式的数据(也就是说没有分隔符)。 |
read_clipboard | 读取剪切板中的数据,可以看做read_table的剪切板。在将网页转换为表格的时候很有用。 |
参数 | 说明 |
---|---|
value | 用于填充缺失值的标量值或者字典对象。 |
method | 插值方式。如果函数调用时未指定其他参数的时候,默认为“ffill”。 |
axis | 待填充的轴,默认axis=0。 |
inplace | 修改调用者对象而不产生副本。 |
limit | (对于前向或者后向填充)可以连续填充的最大数量。 |
参数 | 说明 |
---|---|
path | 表示文件系统的位置、URL、文件型对象的字符串。 |
sep | 用于对行中各字段进行拆分的字符序列或者正则表达式。 比如用于保存数据的时候,可以指定seq来自定义分隔符。 |
na_rep | 指定缺失值保存格式(默认是空字符串)。 |
delimiter | 用于对行中各字段进行拆分的字符序列或者正则表达式。 |
header | 用作列名的行号。默认是0(第一行),如果没有header行就应该设置为None。 |
index_col | 用作索引的列编号或者列号。可以是单个名称/数字或者由多个名称/数字组成的列表(层次化索引)。 |
names | 用于结果的列名列表,结合header=None。 |
skiprows | 需要忽略的行数(从文件开始处算起),或需要跳过的列号列表(从0开始)。 |
na_values | 一组用于替换NA的值。 |
comment | 用于将注释信息从行尾拆分出去的字符(一个或者多个)。 |
parse_dates | 尝试将数据解析为日期,默认为False。如果为True,则尝试解析所有列。此外,还可以指定需要解析的一组列号或者列名。如果列表的元素为列表或者元组的话,就会将多个列组合到一起再进行日期解析工作(例如,日期/时间分别位于两个列中)。 |
keep_date_col | 如果连接多列解析日期,则保持参与连接的列。默认为False。 |
converters | 由列号/列名跟函数之间的映射关系组成的字典。例如,{‘foo’:f}会对foo列的所有值应用函数f。 |
dayfirst | 当解析有歧义的日期的时候,将其当做国际格式(例如,8/28/2017->Augest 28,2017)。默认为False。 |
date_parse | 用于解析日期的函数。 |
nrows | 需要解析的行数(文件开始处算起)。 避免读取整个文件。 |
iterator | 返回一个TextParse以便逐块读取文件。 |
chunksize | 文件块的大小(用于迭代)。 需要逐块读取文件,可以设置chunksize的大小。 |
skip_footer | 需要忽略的行数(从文件末尾处算起)。 |
verbose | 打印各种解析器输出信息,比如“非数值列中缺失值的数量”等等。 |
encoding | 用于将unicode的文本编码格式。例如:“utf-8”表示用UTF-8编码的文本。 |
squeeze | 如果数据经过解析后仅含有一列,则返回False。 |
thousands | 千分位分隔符,如",“或者”."。 |
参数 | 说明 |
---|---|
delimiter | 用于分割字段的单个字符串,默认为“,”。 |
lineterminator | 用于写操作的行结束符,默认为“\r\n”。读操作将忽略此选项,它能认出跨平台的行结束符。 |
quotechar | 用于带有特殊字符(如分隔符)的字段的引用符号。默认为“"”。 |
quoting | 引用约定。可选值包括csv.QUOTE_ALL(引用所有字段)、csv.QUOTE_MINIMAL(只引用带有诸如分隔符之类特定字符的字段)、完善信息请参考Python的文档。默认为QUOTE_MINIMAL。 |
skipinitialspace | 忽略分隔符后面的空白符。默认为False。 |
doublequote | 如何处理字段内的引用符号。如果为True,则双写。完整信息及行为请参见在线文档。 |
escapechar | 用于对分隔符进行转义的字符串(如果quoting被设置为csv.QUOTENONE的话),默认禁用。 |
注意: 对于那些使用复杂分隔符或者多字符分隔符的文件,csv模块就无能为力了。这种情况下,你就只能使用字符串的spilt方法或正则表达式方法re.spilt进行拆分和其他整理工作了。
很多工具都能实现高效地读写磁盘上以二进制格式存储的科学数据。HDF5就是其中一个流行的工业级库,它是一个C库,带有很多语言的接口,如Java、Python和MATLAB等。HDF5中的HDF指的是层次型数据格式(Hierarchical data format)。每个HDF5文件都含有一个文件系统式的节点结构。与其他简单格式相比,HDF5支持多种压缩器的即时压缩,还能更加高效地存储重复模式数据。对于那些非常大的无法直接放入内存的数据集,HDF5就是不错的选择,因为它可以高效地分块读写。
Python中的HDF5有两个接口(PyTables和h5py),它们各自采用了不同的问题解决方式。h5py提供了一种直接而高级的HDF5API访问接口,而PyTables则抽象了HDF5许多细节以提供对核外计算技术(out-of-core computation)的某些支持。
pandas有一个最小化的类似字典的HDFStore类,它通过PyTables存储pandas对象。
由于许多数据分析问题都是IO密集型(而不是CPU密集型),利用HDF5这样的工具能显著提升应用程序的效率。
警告:HDF5不是数据库。它最适合用作“一次写多次读”的数据集。虽然数据可以在任何时候被添加到文件中,但如果同时发生多个写操作,文件就有可能被破坏。
HDFStore
;store.close()
,os.remove('mydata.h5')
。Pandas的ExcelFile类支持读取存储在Excel中的表格型数据。xls_file = pd.ExcelFile('data.xls')
to_pickle
转换为二进制文件。read_pickle
将二进制文件读取出来。Pandas和Python标准库提供了一组高级的、灵活的、高效的核心函数和算法,它们使你能够轻松将数据规整化为正确的形式。
以下都是Pandas中的方法:
方法 | 说明 |
---|---|
merge | 可以根据一个或者多个键值将不同的DataFrame中的行连接起来。SQL或其他关系型数据库的用户对此应该比较熟悉,因为它实现得到就是数据库的连接操作。 |
concat | 可以沿着一条轴将多个对象堆叠到一起。 |
combine_first | 可以将重复数据编接在一起,用一个对象中的值填充另一个对象中的缺失值。 |
参数 | 说明 |
---|---|
left | 参与合并的左侧的DataFrame。 |
right | 参与合并的右侧的DataFrame。 |
how | “inner”, “outer”, “left”, “right”其中之一。 默认为“inner”。 |
on | 用于连接的列名。必须存在于左右两个DataFrame对象中。如果未指定,且其他连接键也未指定,则以left和right列名的交集作为连接键。 |
left_on | 左侧DataFrame中用作连接键的列。 |
right_on | 右侧DataFrame中用作连接键的列。 |
left_index | 将左侧的行索引用作其连接键。 |
right_index | 将右侧的行索引用作其连接键。 |
sort | 根据连接键对合并后的数据进行排序,默认为True。有时在处理大数据集的时候,禁用该选项可以获得更好的性能。 |
suffixes | 字符串值元组,用于追加到重叠列名的末尾,默认为(’_x’,’_y’)。例如,如果左右两个DataFrame对象都有“data”,则结果中就会出现“data_x”和“data_y”。 |
copy | 设置为False,可以在某些特殊情况下避免将数据复制到结果数据结构中。默认总是复制。 |
Matplotlib是最流行的用于绘制数据图表的Python库。
Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。
通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。
IPython是Python科学计算标准工具集合的组成部分,它将其他所有的东西联系到了一起。它为交互式和探索式计算提供了一个强健而高效的环境。它是一个增强的Python Shell, 目的是为了提高编写、测试、调试Python代码的速度。它主要用于交互式数据处理和利用Matplotlib对数据进行可视化处理。
架构 |
---|
强大的交互式 shell |
Jupyter 内核 |
交互式的数据可视化工具 |
灵活、可嵌入的解释器 |
易于使用,高性能的并行计算工具 |
ipython notebook目前已经整合为Jupyter notebook。安装如下:
sudo pip3 install jupyter notebook
在任意一个文件夹下面执行下面的指令:
jupyter notebook
Scipy是一组专门解决科学运算中各种标准问题域的包的集合,主要包括下面的这些包:
包名 | 作用 |
---|---|
scipy.integrate | 数值积分例程和微分方程求解器 |
sicpy.linalg | 扩展了由numpy.linalg提供的线性代数例程和矩阵分解功能。 |
scipy.optimize | 函数优化器(最小化器)以及根查找算法。 |
scipy.signal | 信号处理工具。 |
scipy.sparse | 稀疏矩阵和稀疏线性系统求解器。 |
scipy.special | SPECFUN(这是一个实现了很多常用数学函数,比如伽马函数的Fortran库)的包装器。 |
scipy.stats | 标准连续和离散概率分布(如密度函数、采样器、连续分布函数等)、各种统计校验方法,以及更好的描述统计方法。 |
scipy.weave | 利用内联C++代码加速数组计算的工具。 |
Numpy和Scipy的有机结合可以替代MATLAB的计算功能(包括其插件工具箱)。
Seaborn is a Python data visualization library with an emphasis on statistical plots. The library is an excellent resource for common regression and distribution plots
Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。Anaconda利用工具/命令conda来进行package和environment的管理,并且已经包含了Python和相关的配套工具。
安装Anaconda
chmod +x Anaconda3.sh
./Anaconda3.sh
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
vim ~/.bashrc
export PATH="/home/python/anaconda3/bin:$PATH"
source ~/.bashrc
补齐库:
# Ubuntu/Linux 64-bit
$ sudo apt-get install python-pip python-dev
# CentOS, Fedora, RHEL
$ sudo yum install python-pip python-devel
# Mac OS X
$ sudo easy_install pip
首先,创建一个叫做的tensorflow
虚拟环境: conda create -n tensorflow pip python=3.5 # 或者 python=3.6,等等。
启动我们创建的虚拟环境source activate tensorflow
安装Tensorflow:
(tensorflow)$ pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/protobuf-3.1.0-cp35-none-linux_x86_64.whl
之后就会自动安装所有的依赖了。