zoukankan      html  css  js  c++  java
  • R语言数组部分的笔记

           要建立一个数组,首先需要一个维数向量dim来描述其维数属性. dim 是由一个或多个非负整数组成的向量,所有非负整数的乘积等于数组的长度。一个向量只有定义其维数以后才能成为一个数组,例如:

    x<-c(1:10)
    is.array(x)#检验x是不是数组
    is.vector(x)#查看其是不是一个向量
    dim(x)<-8#定义谁数后成为数组
    dim(x)<-10#定义谁数后成为数组,且长度要与向量长度一样
    is.array(x)#检验x是不是数组
    

      结果:

     注意:若dim(x)<-8,这个所赋的值已经小于向量的长度,系统会报错为下所示

    Error in dim(x) <- 8 :
    dims [product 8] do not match the length of object [10]

    dim(x)#查看x的数组长度
    

      

     矩阵的建立:

           由于矩阵具有特殊性,R语言中往往利用函数matrix()建立矩阵,利用函数diag()建立对角矩阵.函数matrix()的调用格式为:

    matrix(data=NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames= NULL)

           其中,data 为给定的数据向量;nrow为矩阵的行数;ncol为矩阵的列数;;byrow 为逻辑参数,默认状态为FALSE,即按列填充数据; dimnames 为矩阵维数的名称,默认时为空。例如

    mat<-matrix(1:12,nrow=4,ncol=3,byrow=T);mat
    

      

    diag(4)#创建一个4阶的单位矩阵
    

     

    z<-c(1,2,3,4)#创建一个主对角线上的元素为z向量上的这些元素的矩阵
    diag(z)#创建矩阵
    

      

    mat[2,3]#查看矩阵第二行第三列的元素
    diag(z)[,3]#查看矩阵z的第三列元素
    diag(z)[1,]#查看矩阵z的第一行上的元素
    diag(z)[-1,]#去除矩阵z的第一行元素
    mat[1,3]<-99;mat#替换第一行第三列位置上的元素
    

      

    mat[1+1,]#第一行元素+1
    

      

     t(mat)#转置
    

     

    mat1<-cbind(mat,x);mat1#按列合并矩阵
    mat2<-rbind(mat,x);mat2#按行合并矩阵

      

    diag(mat2)#查看矩阵主对角线上的元素
    

      

     d<-matrix(c(1,3,6,9),nrow=2,ncol=2);d#建一个方阵
    

      

    det(d)#计算方阵的行列式值
    

      

     矩阵的代数乘积:矩阵A和B的代数乘积A%*%B只有在A的列数与矩阵B的行数相同的条件下才能够进行运算.。

    矩阵A和B的交叉乘积:

    矩阵(向量)的外积

     线性方程组的求解

     

     矩阵的特征值与特征向量

     矩阵的奇异值分解

    d1<-matrix(1:12,nrow =3,ncol=4,byrow=T);d1#创建矩阵
    mat2%*%d1#两个矩阵的乘积
    x1<-matrix(c(1,6,8,9),nrow=2,ncol=2,byrow=T);x1#创建矩阵
    x2<-matrix(c(3,5,9,4),nrow=2,ncol=2,byrow=T);x2#创建矩阵
    crossprod(x1,x2)#内积
    x<-1:4;x
    y<-1:3;y
    outer(x,y,"+")#外积
    outer(x,y)#外积
    x3<-matrix(c(1,5,3,4),nrow=2,ncol=2,byrow=T);x3#矩阵
    X<-solve(x2,x3);X#求出X的值
    solve(x2)#由于矩阵x2可逆,则命令solve(x2)返回矩阵x2的逆矩阵

    x2%*%solve(x2)#证明solve(x2)是x2的逆矩阵

    sv<-eigen(x2);sv#特征值与特征向量
    a1<-matrix(c(-1,2,3,1,0,3,-2,1,4,0,3,2),nrow=3,ncol=4,byrow=T);a1
    b1<-matrix(c(4,3,2,-1,5,-3,0,1,1,2,-5,0),nrow=3,ncol=4,byrow=T);b1
    3*a1-2*b1#3a1-2b1的值
    A<-matrix(c(3,-1,2,0,1,5,7,9,2,4,6,8),nrow=3,ncol = 4,byrow = T);A
    B<-matrix(c(7,5,-2,4,5,1,9,7,3,2,-1,6),nrow=3,ncol=4,byrow=T);B
    x<-((B-A)/2);x#求解A-2X=B的值
    C<-matrix(1:12,nrow=3,ncol=4,byrow=T);C
    svd(C)#求出其的奇异值
    

     

      

             函数max(、min()、median(、 sumO、mean(、 sd0分别返回矩阵所有元素的最大值、最小值、中位数、和、均值以及标准差; var(A)返 回矩阵A的各列的协方差阵; cov(A,B)和cor(A,B)分别返回矩阵A和矩阵B的各列的协方差阵和相关系数阵,由定义cov(a,a)=var(a)。

         函数cumsum(、cumprod0、 cummax(、 cummin0分别返回矩阵的(按列)累积求和、累积乘积、累积最大值以及累积最小值向量。

           函数max(、min(、 median(、sum()、mean(、 sd0只针对矩阵所有元素计算,若针对每一行或每一列进行 上述计算,可以利用命令apply0),其调用格式为:

                    apply(X, MARGIN, FUN)

           其中,X为矩阵或数组; FUN为上述函数;当X为矩阵时,参数MARGIN=1,表示按行计算,MARGIN=2,表示按列计算,当X为三维数组时,MARGIN=c(1, 2)表示按行列进行等,另外,函数dim()、 nrow()以及ncol()可以分别得到矩阵的维数、行数和列数,rownames()、colnames()给矩阵分别添加行名和列名; dimnames()返回矩阵的行名和列名。

     

     

     


    .



     

  • 相关阅读:
    yolo_to_onnx ValueError: need more tan 1 value to unpack
    yolo_to_onnx killed
    C++ 实现二维矩阵的加减乘等运算
    Leetcode 1013. Partition Array Into Three Parts With Equal Sum
    Leetcode 1014. Best Sightseeing Pair
    Leetcode 121. Best Time to Buy and Sell Stock
    Leetcode 219. Contains Duplicate II
    Leetcode 890. Find and Replace Pattern
    Leetcode 965. Univalued Binary Tree
    Leetcode 700. Search in a Binary Search Tree
  • 原文地址:https://www.cnblogs.com/cxy-0902/p/12369394.html
Copyright © 2011-2022 走看看