精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
R語言筆記丨矩陣、數組介紹

今天筆記內容包含R語言中矩陣和數組基礎知識。

R語言矩陣

創建矩陣

矩陣內可以是數字、符號、數學式,類似于常見的二維數組,有m行(row)n列(col)的矩陣m×n。

R 語言的矩陣可以使用 matrix() 函數來創建,語法格式如下:matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,dimnames = NULL)

參數說明:

  • data 向量,矩陣的數據

  • nrow 行數

  • ncol 列數

  • byrow 邏輯值,為 FALSE 按列排列,為 TRUE 按行排列

  • dimname 設置行和列的名稱,該參數用含有兩個向量(字符串)的列表組成。

# 按行排列創建矩陣
> zhen_1 = matrix(c(1:12),nrow = 3,byrow = TRUE)
> print(zhen_1)
  [,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9   10   11   12
# 定義行和列的名稱
> rownames_1 = c("a1","a2","a3")
> colnames_2 = c("b1","b2","b3","b4")
# 輸出矩陣
> out_1 = matrix(c(1:12),nrow = 3,byrow = TRUE,dimnames = list(rownames_1,colnames_2))
> print(out_1)
   b1 b2 b3 b4
a1  1  2  3  4
a2  5  6  7  8
a3  9 10 11 12

轉置矩陣

R 語言矩陣提供了t()函數,可以實現矩陣的行列互換,變化效果如下:

我們對剛剛創建的out_1矩陣進行轉置后輸出,如下:

> out_1 = matrix(c(1:12),nrow = 3,byrow = TRUE,dimnames = list(rownames_1,colnames_2))
> print(out_1)
   b1 b2 b3 b4
a1  1  2  3  4
a2  5  6  7  8
a3  9 10 11 12
> print(t(out_1))  #輸出轉置矩陣用t()
   a1 a2 a3
b1  1  5  9
b2  2  6 10
b3  3  7 11
b4  4  8 12

調用矩陣元素

可以元素的列索引和行索引,類似坐標形式,獲取矩陣元素,如下:

> print(out_1) #獲取整個矩陣
   b1 b2 b3 b4
a1  1  2  3  4
a2  5  6  7  8
a3  9 10 11 12
> print(out_1[1,2]) # 獲取第1行第2列的元素
[12
> print(out_1[2,]) # 獲取第2行的元素
b1 b2 b3 b4 
 5  6  7  8 

矩陣的計算

大部分人已經學過線性代數,了解矩陣的加減乘除法則,值得注意的是只有行和列數都相同的矩陣才能加減運算,只有第一個矩陣的列數等于第二個矩陣的行數才能相乘。接下來進行演示:

# 矩陣相加,相減只需把加號改成減號
> out_sum = m_1 + m_2  # 兩個矩陣都是2×3
> cat("結果:","\n")
結果: 
> print(out_sum)
  [,1] [,2] [,3]
[1,]   14   -2 4
[2,]   18 8 6
# 矩陣相乘
> out_cheng = m_1 * m_2  
> cat("結果:","\n")
結果: 
> print(out_cheng)
  [,1] [,2] [,3]
[1,]   49 1 4
[2,]   81   16 9
# 矩陣相除
> out_chu = m_1 / m_2  
> cat("結果:","\n")
結果: 
> print(out_chu)
  [,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 1 1

數組

R 語言可以創建一維或多維數組,數組是一個同一類型的集合,矩陣就是一個二維數組。

數組創建使用array()函數,該函數使用向量作為輸入參數,可以使用 dim 設置數組維度。語法格式如下:

array(data = NA, dim = length(data), dimnames = NULL)

  • data 向量,數組元素。
  • dim 數組的維度,默認是一維數組。
  • dimnames 維度的名稱,必須是個列表

例如創建一個3×3的二維數組,用于后續演示,方法如下:

> v1 = c(1,2,3)
> v2 = c(4,5,6,7,8,9)
> shuzu = array(c(v1,v2),dim = c(3,3,2))
> print(shuzu)
, , 1

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

, , 2

  [,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
  • 設置各維度的名稱
> column.names = c("col1","col2","col3")  #設置列名
> row.names = c("row1","row2","row3"#設置行名
> matrix.names = c("m1","m2"#設置矩陣名
> out_3 = array(c(v1,v2),dim = c(3,3,2),dimnames = list(row.names,column.names,matrix.names)) #設置數組名
> print(out_3) #輸出
, , m1

  col1 col2 col3
row1 1 4 7
row2 2 5 8
row3 3 6 9

, , m2

  col1 col2 col3
row1 1 4 7
row2 2 5 8
row3 3 6 9
#上述m1和m2矩陣應用于筆記后面的演示,不再重復
  • 訪問數組元素

數組的元素有坐標位置,索引順序為(行,列,維度),例如[3,2,4]表示第4個矩陣第3行第2列的元素。

, , m2  #第二個矩陣

  col1 col2 col3
row1 1 4 7
row2 2 5 8
row3 3 6 9

> print(out_3[3,1,2])
[13  #輸出結果正確

  • 操作數組元素

可以通過訪問矩陣的元素來訪問數組,例如從數組中的一個矩陣創建新矩陣,然后進行矩陣加減運算,演示如下:

> matrix_1 = shuzu[,,1
> matrix_2 = shuzu[,,2]
> sum_1 = matrix_1 + matrix_2
> print(sum_1)
  [,1] [,2] [,3]
[1,] 2 8   14
[2,] 4   10   16
[3,] 6   12   18

apply()函數能夠對數組跨緯度計算,語法格式為:apply(x, margin, fun)

  • x 數組
  • margin 數據名稱(1代表行,2代表列,c(1,2)代表行和列)
  • fun 計算函數
> print(shuzu)  
, , 1   #數組的第一個矩陣
  [,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9

, , 2  #數組的第二個矩陣
  [,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9

> out_4 = apply(shuzu,1,sum)  #對數組所有矩陣按照每一行的方式求和
> print(out_4)
[124 30 36  #第一行數據24=1+4+7+1+4+7,確實能行!
快速記憶:
# 計算數組中所有矩陣對應行的數字之和
result <- apply(shuzu, c(1), sum)
# 計算數組中所有矩陣對應列的數字之和
result <- apply(shuzu, c(2), sum)
# 計算數組中每個矩陣內部的所有數字之和
result <- apply(shuzu, c(3), sum)
本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
R語言數組array函數
614,矩陣置零
【每周一坑】楊輝三角形
操作 numpy 數組的常用函數
矩陣的最小路徑和二維動態規劃的空間壓縮
算法面試題四:兩數之和,有效的數獨,旋轉圖像
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 石门县| 德化县| 信丰县| 五家渠市| 高密市| 化德县| 金门县| 华安县| 巫山县| 博兴县| 聊城市| 太湖县| 黎城县| 香港| 京山县| 平潭县| 吴川市| 宜黄县| 连云港市| 盱眙县| 开原市| 朝阳区| 青铜峡市| 巧家县| 桂阳县| 博白县| 桐城市| 兰考县| 梨树县| 个旧市| 东城区| 淮南市| 荥经县| 黑河市| 平塘县| 江山市| 白沙| 醴陵市| 克山县| 罗平县| 安义县|