You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中将数据框转换为矩阵并与它的转置相乘?

嘿,这事儿不难!我给你分R和Python两种最常用的场景来演示,一步步搞定把数据框转成矩阵/数组,再和它的转置做乘法的需求:

在R中实现
  • 首先假设你有一个全是定量变量的数据框df,比如:
    df <- data.frame(a = c(1,2,3), b = c(4,5,6), c = c(7,8,9))
    
  • 把数据框转成矩阵:直接用as.matrix()就行,因为都是数值列,转换毫无压力:
    mat <- as.matrix(df)
    
  • 计算矩阵与转置的乘积:用R里专门的矩阵乘法运算符%*%(别用普通的*,那是逐元素相乘,不是矩阵乘法):
    # 原矩阵 × 转置矩阵,得到n×n的结果(n是数据框的行数)
    result <- mat %*% t(mat)
    
    # 如果需要转置矩阵 × 原矩阵,得到p×p的结果(p是数据框的列数),就这么写:
    # result <- t(mat) %*% mat
    
在Python中实现

这里用pandas处理数据框,numpy做矩阵运算,是最常用的组合:

  • 先构造一个示例数据框df:
    import pandas as pd
    df = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6], 'c': [7,8,9]})
    
  • 把数据框转成numpy数组(等价于矩阵):推荐用.to_numpy()方法,比旧版的.values更规范:
    import numpy as np
    arr = df.to_numpy()
    
  • 计算转置相乘:用@运算符或者np.dot()都可以,效果一样:
    # 原数组 × 转置数组
    result = arr @ arr.T
    
    # 或者用np.dot()
    result = np.dot(arr, arr.T)
    
    # 转置数组 × 原数组的写法:
    # result = arr.T @ arr
    
小提醒
  • 务必确保你的数据框里全是数值型变量!如果有字符、因子这类非数值列,转换矩阵的时候会报错,记得先把这些列删掉或者转换成数值哦。
  • 矩阵乘法有维度要求:原矩阵是n行p列,转置后是p行n列,所以原×转置得到n×n的矩阵,转置×原得到p×p的矩阵,根据你的需求选就行。

内容的提问来源于stack exchange,提问作者Walid Sharabati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:14:19