做数据处理的工作,Matlab无疑是最好的,但是matlab的是小众语言,实际项目中运用的很少,很多科学家和工程师做数据处理都使用python,因为python有很多关于科学计算的模块.这里介绍一下numpy.

个人实践

最近做数据处理的事,由于Linux中matlab安装比较麻烦以及python更加流行,决定使用python和numpy来进行数据处理.接下来记录一些个人心得.
第一,数据处理往往是一大堆数据,因此会涉及到数据的读取和保存,也就是IO处理.这里简单写几行代码来说明numpy中如何读取和保存txt文件

1
2
3
4
5
6
7
import numpy as np
# 读取
result=np.loadtxt('axis2_sample_point.txt')
# 保存,\r\n windows的换行符
with open('result.txt','a') as file:
write_str = '%f %f %f %f\r\n\r\n'% (params[1],params[2],params[3],params[0])
file.write(write_str)

第二,那就是数据的矩阵处理了.首先必须知道numpy如何初始化一个数组

1
2
import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,,8,9]])

这里我想说的是numpy的数组和C++中的数组可不一样,首先,它可以是一维的,二维的(上面的代码就是二维的),甚至多维的.可以根据中括号的层数来判断.其次,要知道数组的shape,通过变量名.shape可以获得.

第三,就是一些常见的方法.
1,初始化全为1或0的数组

1
2
3
4
5
import numpy as np
# 初始化0数组
a=np.zeros((3,1))
# 初始化1数组
b=np.ones((3,3))

2,数组切片

1
2
3
4
5
6
import numpy as np
a=np.array([[1,2],[3,4],[5,6]])
# 取数组每一行,但只取其第一列
b=a[:,0:1]
# 取数组的每一列,但只取第二行到最后一行
c=a[1:,:]

3,数组重新组合

1
2
3
4
5
6
7
import numpy as np
a=np.array([[1],[2],[3]])
b=np.array([[4],[5],[6]])
# 数组水平方向合并
c=np.hstack((a,b))
# 数组垂直方向合并
d=np.vstack((a,b))

第四,区分numpy和python数据

1
2
3
4
5
import numpy as np
# python数据
a=[[1,2],[3,4]]
# numpy数据
b=np.array([[1,2],[3,4]])

第五,会使用help方法查看各个函数功能

1
2
import numpy as np
help(np.vstack)

推荐

上面写的都是个人的一些初步使用心得,不够全面,下面推荐两个比较好的网址,以便日后学习和翻阅
NumPy基本方法
NumPy-快速处理数据