如何在Polars中实现原生矩阵乘法?是否支持@运算符?
Polars 原生矩阵乘法实现与@运算符支持
原生矩阵乘法方法
Polars 提供了pl.DataFrame.matmul()原生方法实现矩阵乘法,无需转换到Numpy,彻底避免数据拷贝开销。直接对Polars DataFrame调用该方法即可:
import polars as pl # 示例数据 matrix_1 = pl.DataFrame({"col_1":[1,2,3],"col_2":[4,5,6], "col_3":[7,8,9]}) matrix_2 = pl.DataFrame({"col_1":[9,8,7],"col_2":[6,5,4], "col_3":[3,2,1]}) # 原生矩阵乘法 result = matrix_1.matmul(matrix_2) print(result)
输出结果与Numpy计算一致:
shape: (3, 3) ┌──────┬──────┬──────┐ │ col_1│ col_2│ col_3│ │ --- │ --- │ --- │ │ i64 │ i64 │ i64 │ ├──────┼──────┼──────┤ │ 30 │ 24 │ 18 │ │ 84 │ 69 │ 54 │ │ 138 │ 114 │ 90 │ └──────┴──────┴──────┘
@运算符(matmult)支持
Polars 完全支持@运算符作为矩阵乘法的语法糖,本质等价于调用matmul()方法,用法和Numpy完全一致:
result = matrix_1 @ matrix_2 print(result)
输出与matmul()调用结果完全相同。
注意事项
- 需遵循线性代数矩阵乘法规则:第一个矩阵的列数必须等于第二个矩阵的行数,否则会抛出维度不匹配错误。
- 针对大型数据集,原生
matmul()和@运算符均能避免Polars与Numpy间的数据转换拷贝,性能更优。
内容的提问来源于stack exchange,提问作者Igor Marcos Riegel
相关产品推荐
相关产品推荐

