笔者比较喜欢python,看到文献中作者作者用R语言以及matlab语言处理数据,便想用Python也同样实现。在翻译过程中,发现R语言在矩阵处理中确实非常方便。当然,R语言能做的,原则上Python也都能完成,况且有Numpy的帮助后,矩阵的一些运算都变得非常轻松。下面是笔者在翻译过程中用到的一些方法,便记录了下来。
不过笔者还有一个问题没有找到好的解决方式,那便是:
R语言中的sort函数可以直接根据矩阵中的某行或者某列进行排序,并且其他行、列的内容也随之改变,比如下面一段代码
Result=sort(A[,2],decreasing = TRUE,index.return=TRUE);
就可以根据A矩阵第二列进行排序并且可以通过Result$ix得到第一列因此而改变后的内容,有点像Excel中排序后可以影响到扩展内容一样。而Numpy中笔者未发现该功能。笔者用的还是python内置的sort函数,大致思想如下,就不贴出程序了
本来如果是
[[ 1 , 2, 3 , 4 , 5],
[ 10, 12, 32, 4, 7]]
把它改成[(1,10),(2,12),(3,32),(4,4),(5,7)]
然后用A.sort(key=lambda x:x[1])进行排序,就会变成
[(4,4),(5,7),(1,10),(2,12),(3,32)]的结果。达到相同的作用。

以下是关于numpy中关于array的一些笔记

1.array的行数和列数,shape:
x = np.array([1,2])
x.shape
->(4,)
y = np.array([[1,2],[3,4],[5,6]])
y.shape
->(3,2)
2.array求和:
(1)对列求和
x = np.array([[1,2],[3,4],[5,6]])
x.sum(0)
->array([9,12])
(2)对行求和
x.sum(1)
->array([3,7,11])
(3)叠合
x.cumsum()
->array([1,3,6,10,15,21])
x.cumsum(0)
->array([[1,2],[4,6],[9,12]])
x.cumsum(1)
->array([[1,3],[3,7],[5,11]])
3.选取某一列值:
x:,1
4.矩阵乘法
x = np.array([[1,2],[3,4],[5,6]])
y = np.array([2,4])
xy(相当于[[12,24],[13,44],[52,6*4]])
->array([[2,8],[6,16],[10,24]])
x.dot(y)(等同于np.dot(x,y),即数学上的点乘)
->array([10,22,34])
5.新建顺序矩阵或者零矩阵:
np.arange(1,9).reshape(3,3)
->array([[1,2,3],[4,5,6],[7,8,9]])
np.zeros((2,3))
->array([[0,0,0],[0,0,0]])