Numpy 1e-0.1 小数显示问题修改

本文介绍了如何在TensorFlow中调整输出格式,去除e表示并设置小数点后仅显示四位,以提高输出的可读性。通过np.set_printoptions方法实现,适合日常开发中的美化输出。
部署运行你感兴趣的模型镜像

最近查看tensor输出的时候,只想看到小数后四位,但是由于tensor输出的是float64位的科学技术法,看起来很难受,如下图所示:
在这里插入图片描述

1.去掉e显示

由于上图很难看出来区别,所以需要转换一下输出方式,去掉e这种表示,在最上面设置一下

np.set_printoptions(suppress=True)

在这里插入图片描述

2.设置四位小数显示

由于小数太多不美观,可以设置只显示4位,代码如下:

np.set_printoptions(precision=4)

效果为:

在这里插入图片描述
这样就会美观好多,大家以后可以常用这两项设置

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.9

TensorFlow-v2.9

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

import numpy as np from scipy.optimize import minimize import matplotlib.pyplot as plt # 原始X点和实际y值 x_initial = np.array([0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]) # 16个x点 y_actual = np.array([0.1, 0.3, 0.5, 0.7, 0.9, 1.2, 1.5, 1.8, 2.1, 2.0, 1.9, 1.8, 1.7, 1.6, 1.5, 1.4]) # 实际误差 # 定义目标函数:最小化预测值与实际值的平方误差和 def objective_function(x): # 确保X点是排序的 x_sorted = np.sort(x) # 使用二次多项式模型拟合数据 coefficients = np.polyfit(x_sorted, y_actual, 2) polynomial = np.poly1d(coefficients) # 计算预测值和平方误差和 y_predicted = polynomial(x_sorted) error = np.sum((y_predicted - y_actual) **2) return error # 添加约束:X点必须单调递增(相邻元素差值大于1e-6,避免数值问题) def constraint(x): return np.diff(x) - 1e-6 # 确保所有相邻元素的差都大于一个小正数 # 设置约束条件 constraints = {'type': 'ineq', 'fun': constraint} # 设置优化选项,使用支持约束的SLSQP方法 options = {'maxiter': 10000, 'ftol': 1e-8, 'eps': 1e-8, 'disp': True} # 运行优化(使用SLSQP算法处理约束) result = minimize(objective_function, x_initial, method='SLSQP', constraints=constraints, options=options) # 输出优化结果 print("优化成功:", result.success) print("优化后的X点:", np.sort(result.x)) print("最小误差值:", result.fun) # 绘制原始X点和优化后的X点及其对应的y值 plt.figure(figsize=(12, 6)) # 原始数据 plt.subplot(1, 2, 1) plt.plot(x_initial, y_actual, 'bo-', label='原始X点') plt.title('原始X点与实际y值') plt.xlabel('X值') plt.ylabel('y值(误差)') plt.legend() plt.grid(True) # 优化后的数据 x_optimized = np.sort(result.x) plt.subplot(1, 2, 2) plt.plot(x_optimized, y_actual, 'ro-', label='优化后X点') plt.title('优化后X点与实际y值') plt.xlabel('X值') plt.ylabel('y值(误差)') plt.legend() plt.grid(True) plt.tight_layout() plt.show() # 打印排序后的优化X点,保留4位小数 print("\n排序后的优化X点(保留4位小数):") print([round(x, 4) for x in np.sort(result.x)])
08-30
import numpy as np from scipy.linalg import toeplitz, solve_toeplitz def ar_gammas(phis, sigma2, max_lag=20): """ 计算AR(n)过程的自协方差函数(0到max_lag) Parameters: phis (list): 自回归系数[𝜙_1, 𝜙_2, ..., 𝜙_n] sigma2 (float): 噪声方差𝜎_𝜀^2 max_lag (int): 最大滞后阶数 Returns: list: γ(0)到γ(max_lag)的自协方差值 """ n = len(phis) if n == 0: # 白噪声过程 return [sigma2] + [0] * max_lag # 构建Yule-Walker方程的托普利茨矩阵 r = np.zeros(n) r[0] = 1 for i in range(1, n): r[i] = -sum(phis[j] * (r[i - 1 - j] if i - 1 - j < len(r) else 0) for j in range(min(i, n))) # 构建右侧向量 [σ_ε^2, 0, 0, ...] b = np.zeros(n) b[0] = -sigma2 # 解Yule-Walker方程 (使用Levinson-Durbin算法优化) try: phi_est = solve_toeplitz((r, r), b) except np.linalg.LinAlgError: # 托普利茨解法失败时使用通用解法 R = toeplitz(r) phi_est = np.linalg.solve(R, b) # 计算γ(0) if abs(sigma2) > 1e-10: # 检查sigma2是否为零 inner_term = -b / sigma2 denominator = 1 + np.dot(phi_est, inner_term) # 检查分母是否为零 if abs(denominator) > 1e-10: gamma0 = sigma2 / denominator else: gamma0 = np.nan # 分母为零时设为NaN else: gamma0 = np.nan # sigma2为零时设为NaN # 计算初始自协方差γ(0)到γ(n) gammas = [gamma0] for k in range(1, n + 1): gamma_k = sum(phis[j - 1] * gammas[k - j] for j in range(1, min(k, n) + 1) if k - j < len(gammas)) gammas.append(gamma_k) # 递推高阶自协方差(k > n) for k in range(n + 1, max_lag + 1): gamma_k = sum(phis[j - 1] * gammas[k - j] for j in range(1, n + 1) if k - j < len(gammas)) gammas.append(gamma_k) return gammas[:max_lag + 1] def calculate_ar_properties(phi0, phis, sigma2, max_lag=20): """ 计算AR过程的完整统计量 Parameters: phi0 (float): 常数项𝜙_0 phis (list): 自回归系数[𝜙_1, 𝜙_2, ..., 𝜙_n] sigma2 (float): 噪声方差𝜎_𝜀^2 max_lag (int): 最大滞后阶数 Returns: dict: 包含期望、方差、自协方差和自相关系数的字典 """ # 计算数学期望𝜇 mu = phi0 / (1 - sum(phis)) if len(phis) > 0 else phi0 # 计算自协方差函数 gammas = ar_gammas(phis, sigma2, max_lag) variance = gammas[0] # γ(0)即方差 # 计算自相关系数𝜌(k) rhos = [gamma_k / variance for gamma_k in gammas] return { 'expectation': mu, 'variance': variance, 'autocovariance': gammas, 'autocorrelation': rhos } def calculate_mixed_process(props1, props2, p, max_lag=20): """ 计算混合过程Y_t的统计量 Parameters: props1 (dict): X_t1的统计量 props2 (dict): X_t2的统计量 p (float): 伯努利参数 max_lag (int): 最大滞后阶数 Returns: dict: Y_t的期望、方差和自协方差 """ mu1, mu2 = props1['expectation'], props2['expectation'] gamma1, gamma2 = props1['autocovariance'], props2['autocovariance'] # 混合过程的期望 mu_Y = p * mu1 + (1 - p) * mu2 # 混合过程的方差 (k=0) var_Y = (p * gamma1[0] + (1 - p) * gamma2[0] + p * (1 - p) * (mu1 - mu2) ** 2) # 混合过程的自协方差函数 gamma_Y = [var_Y] # k=0 for k in range(1, max_lag + 1): cov_k = p ** 2 * gamma1[k] + (1 - p) ** 2 * gamma2[k] gamma_Y.append(cov_k) return { 'expectation': mu_Y, 'variance': var_Y, 'autocovariance': gamma_Y } # ====================== 使用示例 ====================== if __name__ == "__main__": # 示例参数 (AR(20)过程) phi0_1 = 0.5 phis_1 = [0.3, 0.2, 0.3, 0.3, 0.4, 0.6, 0.4, 0.3, 0.2, 0.3, 0.3, 0.4, 0.6, 0.4, 0.5, 0.1, 0.4, 0.6, 0.7, 0.4] # 𝜙1=0.6, 𝜙2=-0.2 sigma2_1 = 1 # AR(20)过程 phi0_2 = 0.5 phis_2 = [0.1, 0.3, 0.2, 0.5, 0.7, 0.5, 0.3, 0.4, -0.5, -0.2, -0.1, 0.7, 0.5, 0.3, 0.4, -0.5, -0.2, -0.1, 0.7, 0.5] # 𝜙1=0.7 sigma2_2 = 1.0 # 伯努利混合参数 p = 0.6 # 计算两个AR过程的统计量 ar_props1 = calculate_ar_properties(phi0_1, phis_1, sigma2_1, max_lag=7) ar_props2 = calculate_ar_properties(phi0_2, phis_2, sigma2_2, max_lag=7) # 计算混合过程统计量 mixed_props = calculate_mixed_process(ar_props1, ar_props2, p, max_lag=7) # 打印结果 print("AR过程1 (X_t1):") print(f"期望 μ1 = {ar_props1['expectation']:.4f}") print(f"方差 γ1(0) = {ar_props1['variance']:.4f}") print("自相关系数 𝜌1(k):") for k, rho in enumerate(ar_props1['autocorrelation'][:20]): print(f"𝜌1({k}) = {rho:.4f}") print("\nAR过程2 (X_t2):") print(f"期望 μ2 = {ar_props2['expectation']:.4f}") print(f"方差 γ2(0) = {ar_props2['variance']:.4f}") print("自相关系数 𝜌2(k):") for k, rho in enumerate(ar_props2['autocorrelation'][:20]): print(f"𝜌2({k}) = {rho:.4f}") print("\n混合过程 (Y_t):") print(f"期望 E[Y_t] = {mixed_props['expectation']:.4f}") print(f"方差 Var(Y_t) = {mixed_props['variance']:.4f}") print("自协方差函数 𝛾_Y(k):") for k, gamma in enumerate(mixed_props['autocovariance'][:20]): print(f"𝛾_Y({k}) = {gamma:.4f}") 上述代码是原始代码,请修改原始代码,使其能计算并输出当 h=20时的的自相关系数 ρ_i(h)和自协方差函数 γ_i(h),也就是计算0到20的自相关系数 ρ_i(h)和自协方差函数 γ_i(h),请在原始代码中修改,谢谢
最新发布
10-07
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值