数学之路(2)-数据分析-R基础(15)

本博客所有内容是原创,未经书面许可,严禁任何形式的转载。

http://blog.csdn.net/u010255642


矩阵转置

1、使用t完成标准的矩阵转置

> array(h,dim=c(2,5))->mya

> mya

     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10

 > t(mya)
     [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    5    6
[4,]    7    8
[5,]    9   10

2、使用aperm函数实现矩阵转置

aperm有2个常用的参数

第一个参数是需要转置的矩阵,第二个参数perm指示新矩阵相对于第一个参数矩阵的维度的下标,比如说,将行转换为列,将列转换为行,将行列次序更换,将第一维的元素与第二维的元素互换,perm设为c(2,1),perm中是维度下标,不是矩阵下标。


> array(h,dim=c(2,5))->mya

> mya

     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10
> aperm(mya)->myb
> myb
     [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    5    6
[4,]    7    8

[5,]    9   10


> aperm(mya,perm=c(2,1))->myb
> myb
     [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    5    6
[4,]    7    8
[5,]    9   10
>

如果将perm设为c(1,2)表示不交换原矩阵的维度,即不做操作

> mya

     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10

> aperm(mya,perm=c(1,2))->myb
> myb
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10

我们再来看一个3维数组

> array(mya,c(2,2,5))->mya1
> mya1
, , 1


     [,1] [,2]
[1,]    1    3
[2,]    2    4


, , 2


     [,1] [,2]
[1,]    5    7
[2,]    6    8


, , 3


     [,1] [,2]
[1,]    9    1
[2,]   10    2


, , 4


     [,1] [,2]
[1,]    3    5
[2,]    4    6


, , 5


     [,1] [,2]
[1,]    7    9
[2,]    8   10

> aperm(mya1,perm=c(2,1,3))->myb1
> myb1
, , 1


     [,1] [,2]
[1,]    1    2
[2,]    3    4


, , 2


     [,1] [,2]
[1,]    5    6
[2,]    7    8


, , 3


     [,1] [,2]
[1,]    9   10
[2,]    1    2


, , 4


     [,1] [,2]
[1,]    3    4
[2,]    5    6


, , 5


     [,1] [,2]
[1,]    7    8
[2,]    9   10



> aperm(mya1,perm=c(1,3,2))->myb1

> myb1
, , 1


     [,1] [,2] [,3] [,4] [,5]
[1,]    1    5    9    3    7
[2,]    2    6   10    4    8


, , 2


     [,1] [,2] [,3] [,4] [,5]
[1,]    3    7    1    5    9
[2,]    4    8    2    6   10

矩阵的维数与行列数

> ncol(mya)
[1] 5
> nrow(mya)
[1] 2
> dim(mya)
[1] 2 5

8)矩阵乘积

若A为m×n矩阵,B为n×r矩阵,则他们的乘积AB(有时记做A· B)会是一个m×r矩阵,但前提是m与n相同时才有定义。

> a

     [,1] [,2] [,3] [,4] [,5]

[1,]    1    3    5    7    9

[2,]    2    4    6    8   10

> b

     [,1] [,2]

[1,]    1    6

[2,]    2    7

[3,]    3    8

[4,]    4    9

[5,]    5   10

> a %*% b

     [,1] [,2]

[1,]   95  220

[2,]  110  260

>



你可能感兴趣的:(数据分析,数学,人工智能,r)