4. 向量矩阵和数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4. 向量矩阵和数组相关的知识,希望对你有一定的参考价值。
4.1 向量
4.1.1 序列
除了使用冒号运算符之外,R还支持其他函数创建更为通用的序列。其中,seq函数最为常见,能以许多不同的方式指定序列。在平常使用中针对不同的场景,我们有以下三类函数可供使用,他们运行效率更高且更易用,满足了特定场合的使用。
seq.int 可创建一个序列,序列的范围由两个数字指定,还可以设置步长,值得注意的是虽然seq.int以int结尾他同样支持创建浮点数形式的序列,如
seq.int(0.1,0.01,-0.01) [1] 0.10 0.09 0.08 0.07 0.06 0.05 0.04 0.03 0.02 0.01
seq_len函数:创建一个从1到输入值的的序列
seq_along函数:创建一个从1开始,长度是输入向量长度的序列
pp <- c( "peter", "piper", "picked", "a", "peck", "of", "pickled", "peppers" ) for( i in seq_along(pp) ) print(pp[i]) [1] "peter" [1] "piper" [1] "picked" [1] "a" [1] "peck" [1] "of" [1] "pickled" [1] "peppers"
PS:在阅读官方文档后,如果不是特别追求运行效率或者你的序列特别长时,建议还是掌握seq()的使用方法
4.1.2 长度
我们可以通过length函数查到这个值。缺陷值也会被计入长度。
4.1.3 命名
R向量的一个大特性就是能给每个元素命名。通常,标记元素可使得代码可读性更强。
x <- 1:4 names(x) <- c( "apple", "bananas", "kiwi fruit", "" ) x apple bananas kiwi fruit 1 2 3 4
4.1.4 索引向量
通常,我们只要访问向量中的部分或个别元素。这就是所谓的索引,他用方括号[]实现。
1.若给向量传入正数,它会返回此位置上的向量元素切片。他的第一个位置是1(同行python是0)
2.若给向量传入负数,它会返回一个向量切片,里面只有除了负数绝对值位置上的所有元素
3.使用which函数可以返回逻辑向量为TRUE的位置,若将逻辑索引切换到整数索引中,这个函数将很有用
x <- (1:5)^2 which(x > 10) [1] 4 5
4. which.min和which.max分别是which(min(x))和which(max(x))的缩写
4.1.5 向量循环和重复
rep函数非常适合此类任务,它允许我们重复使用元素来创建矢量
rep(1:5, 3) [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
4.2 矩阵和数组
数组是多维的矩阵,所以除了行和列之外,数组还需要维度dim参数
4.2.1 创建数组和矩阵
数组:array()
矩阵:matrix()
4.2.2 行、列和维度
对于矩阵和数组,dim函数将返回其维度的整数值向量
对于矩阵而言,函数nrow和ncol将分别返回行数和列数
4.2.3 行名、列名和维度名
与输出维度函数类型,显示行名、列名和维度名的函数为rownames()、colnames()、dimnames()
4.2.4 索引数组
索引矩阵与索引向量类似。若要显示所有元素,只需空置对应的下标即可
4.2.5 合并矩阵
可以使用cbind和rbind函数按行和列来绑定两个矩阵
cbind(a_matrix,another_matrix) ##横向合并 ein zwei drei vier funf sechs one 1 5 9 2 10 18 two 2 6 10 4 12 20 three 3 7 11 6 14 22 four 4 8 12 8 16 24 rbind(a_matrix, another_matrix) ##纵向合并 ein zwei drei one 1 5 9 two 2 6 10 three 3 7 11 four 4 8 12 five 2 10 18 six 4 12 20 seven 6 14 22 eight 8 16 24
4.2.6 矩阵算术
数组和矩阵支持标准算术运算符(+、-、×、/),除了这些矩阵还有如
转置
t函数可用于转置矩阵 t(a_matrix)
内乘
a_matrix %*% t(a_matrix) ##内乘
外乘
1:3 %o% 4:6 #外乘,o为outer的含义
矩阵的逆
使用solve函数可以很简单的实现矩阵的求逆
以上是关于4. 向量矩阵和数组的主要内容,如果未能解决你的问题,请参考以下文章
[Python系列-14]:人工智能 - 数学基础 -4- 数组元素的线性代数运算(向量矩阵运算)