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

如何将PHP文件存储的quadrature_weights数组加载到Python并控制小数保留位数

实现方案

最简便的方式是通过PHP原生能力将数组导出为通用JSON格式,再用Python读取处理,全程无需手动解析PHP语法,也无需修改原有大型PHP文件,完全避免语法匹配错误。

步骤1:PHP导出数据为JSON

新建独立PHP脚本export_weights.php,内容如下:

<?php
// 替换为你实际的权重文件路径
include 'your_quadrature_weights_file.php';

$export_data = [];
// 遍历将数值转为字符串存储,避免JSON编码时丢失200位高精度小数
foreach ($quadrature_weights as $key => $values) {
    $export_data[$key] = array_map('strval', $values);
}

// 输出JSON到本地文件
file_put_contents('quadrature_weights.json', json_encode($export_data, JSON_PRETTY_PRINT));
?>

在命令行执行php export_weights.php即可生成包含全部64组数据的JSON文件,只要你的环境安装了PHP即可运行,Linux、macOS大多默认自带PHP,Windows可直接下载绿色版PHP解压后运行。

步骤2:Python读取并自定义小数保留位数

以下代码支持两种精度模式,普通场景用float即可,需要保留16位以上小数时开启高精度模式使用Decimal类避免精度丢失:

import json
from decimal import Decimal, getcontext

def load_quadrature_weights(decimal_places: int = 4, high_precision: bool = False):
    with open("quadrature_weights.json", "r", encoding="utf-8") as f:
        raw_data = json.load(f)
    result = {}
    if high_precision:
        # 设置精度冗余避免计算误差
        getcontext().prec = decimal_places + 10
        quantize_rule = Decimal(f"1.{'0' * decimal_places}")
        for str_key, str_values in raw_data.items():
            result[int(str_key)] = [Decimal(v).quantize(quantize_rule) for v in str_values]
    else:
        for str_key, str_values in raw_data.items():
            result[int(str_key)] = [round(float(v), decimal_places) for v in str_values]
    return result

# 示例调用:保留4位小数,返回格式与你要求完全一致的字典
quadrature_weights = load_quadrature_weights(decimal_places=4)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:57:00