Python科学计算结果的存储与读取

简介: Python科学计算结果的存储与读取Python科学计算结果的存储与读取总结于2019年3月17日  荆楚理工学院计算机工程学院一、前言显然,作为一名工科僧,执行科学计算,着用Python,快忘记Matlab吧。

Python科学计算结果的存储与读取

Python科学计算结果的存储与读取

总结于2019年3月17日  荆楚理工学院计算机工程学院

一、前言

显然,作为一名工科僧,执行科学计算,着用Python,快忘记Matlab吧。我用了二十年的时间,熟练掌握了Matlab的用法,然后,很可能,我用6个月不到的时间,选择并实现了用Python替换Matlab。虽然来到了计算机工程学院,但是科学计算是本业,不能久,然后我突然间发现,好多时候,只用pyplot显示结果,我们的计算结果,很多时候需要存储和重复调用的哪,一个图的话,若再需要数据,下次需要,难道再发费几小时重新计算?

用Python替换Matlab的理由:

(1)并行多核计算简单,效率高

之前用Matlab,并行计算需要时间几小时完成一项工作,该工作相似的计算,在Python里仅 用了2小时不到,5300多秒。可见其差异。另外,并行多核计算的代码非常简单,导入multiprocessing,定义其cpu_count,然后导入Pool,执行apply_async,调用get()获得return的结果即可,简单,强大!

(2)占地不大

Matlab现在是越来越大了,您懂得……,但并卵,安装Anaconda也不到3GB吧?我添加了许多插件了的。

(3)通用性强

这个,Python作为一门通用语言,已经成功登顶计算机语言排行榜首,不用多说了吧?

二、在Python中存储和读取科学计算结果

1、计算实例

显然,科学计算往往十分复杂,我此处用一个简单的混沌 映射序列作为后来结果的演示:

复制代码
 1 # 导入各种支持
 2 import matplotlib.pyplot as plt
 3 import numpy as np
 4 import pandas as pd
 5 import random
 6 import math
 7 import json
 8 # import redis
 9 
10 
11 # 建立科学计算
12 # Chebyshev map,初始值0。7,无关a值问题,注意取值是【-1,1】,可通过math.fabs实现切换m
13 def Chebyshev(maxIter, initial_value=0.7, a=1.0):
14 y = [0.0] * maxIter
15 for i in range(maxIter):
16 if i == 0:
17 y[i] = initial_value
18 else:
19 y[i] = math.cos(i / math.cos(y[i - 1]))
20 return y
复制代码

2、采用Json存储和读取

复制代码
# 采用json存储结果
def test_json_write():
    maxIter = 500
    chaos = Chebyshev(maxIter)
    data = { 'chaos':chaos, 'maxIter':500}
    datum = json.dumps(data, ensure_ascii=False)
    with open('chaos.json', 'w') as f:
        json.dump(data, f, indent=4, sort_keys=False)


# 采用json读取文件
def test_json_read():
    fileName = "chaos"
    with open('{}.json'.format(fileName), 'r') as fp:
        result = json.load(fp)
    chaos = result['chaos']
    maxIter = result['maxIter']
    plt.plot(chaos)
    plt.show()
复制代码

优点:一是可以使用dict字典的形式,使结果存储于JSON中,二是数据可见,通用性强;三是复用方便。

3、使用numpy的形式读取和使用

numpy提供了数组的三种存储方法,如save、load组;tofile和Fromfile组;以及savetxt和loadtxt组,三种方法均可以使用,注意前两种情况是对数组加密的,无法像json或txt一样能够显示计算结果。因此,我们在有条件的情况下,可以txt型,但若有json存储方法存在,Txt其实也没有啥优势,毕竟科学计算结果较大,txt数据文件较大时,不好读入。

 

复制代码
# 测试数组的存储方式
def test_numpy_save():
    maxIter = 500
    chaos = Chebyshev(maxIter)
    data = np.array(chaos)
    # data.tofile('chaos.npy',format='%e')
    np.savez('chaos.npz', maxIter, chaos)


# 测试numpy文件的读取
def test_numpy_load():
    # chaos=np.fromfile('chaos.npy',dtype=np.double)
    result = np.load("chaos.npz")
    chaos = result["arr_1"]
    plt.plot(chaos)
    plt.show()
复制代码

三、总结

1、存储单个列表

如果只需要存储一个列型数据,如errro序列,则可以直接用numpy的存储方式,先将序列转换为numpy数组,使用数组的三种存储方式均是可以的。

2、多个数组可使用词曲的方式存储

当有多个需要存储的内容时,可将其转换为词典的格式,统一为data={‘key1 ’:value1, ’key2’:value2 ,……},然后采用json.dump(data,file)的格式,将数据存储为json格式。

原文地址https://www.cnblogs.com/lvqing323/p/10545711.html

相关文章
|
7月前
|
存储 算法 数据挖掘
【2023年中国高校大数据挑战赛 】赛题 B DNA 存储中的序列聚类与比对 Python实现
本文介绍了2023年中国高校大数据挑战赛赛题B的Python实现方法,该赛题涉及DNA存储技术中的序列聚类与比对问题,包括错误率分析、序列聚类、拷贝数分布图的绘制以及比对模型的开发。
164 2
【2023年中国高校大数据挑战赛 】赛题 B DNA 存储中的序列聚类与比对 Python实现
|
5月前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
287 5
|
1月前
|
存储 数据采集 数据库
Python爬虫实战:股票分时数据抓取与存储
Python爬虫实战:股票分时数据抓取与存储
|
5月前
|
数据采集 存储 数据处理
Python爬虫-数据处理与存储(一)
Python爬虫-数据处理与存储(一)
84 0
|
4月前
|
存储 数据处理 Python
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第27天】在科学计算和数据分析领域,Python凭借简洁的语法和强大的库支持广受欢迎。NumPy和SciPy作为Python科学计算的两大基石,提供了高效的数据处理和分析工具。NumPy的核心功能是N维数组对象(ndarray),支持高效的大型数据集操作;SciPy则在此基础上提供了线性代数、信号处理、优化和统计分析等多种科学计算工具。结合使用NumPy和SciPy,可以显著提升数据处理和分析的效率,使Python成为科学计算和数据分析的首选语言。
144 3
|
4月前
|
存储 机器学习/深度学习 算法
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第26天】NumPy和SciPy是Python科学计算领域的两大核心库。NumPy提供高效的多维数组对象和丰富的数学函数,而SciPy则在此基础上提供了更多高级的科学计算功能,如数值积分、优化和统计等。两者结合使Python在科学计算中具有极高的效率和广泛的应用。
161 2
|
5月前
|
机器学习/深度学习 数据采集 算法
探索Python科学计算的边界:NumPy、Pandas与SciPy在大规模数据分析中的高级应用
【10月更文挑战第5天】随着数据科学和机器学习领域的快速发展,处理大规模数据集的能力变得至关重要。Python凭借其强大的生态系统,尤其是NumPy、Pandas和SciPy等库的支持,在这个领域占据了重要地位。本文将深入探讨这些库如何帮助科学家和工程师高效地进行数据分析,并通过实际案例来展示它们的一些高级应用。
121 0
探索Python科学计算的边界:NumPy、Pandas与SciPy在大规模数据分析中的高级应用
|
5月前
|
机器学习/深度学习 算法 数据挖掘
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧1
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
100 5
|
5月前
|
机器学习/深度学习 算法 数据可视化
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧2
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
69 1
|
6月前
|
数据采集 存储 JavaScript
构建您的第一个Python网络爬虫:抓取、解析与存储数据
【9月更文挑战第24天】在数字时代,数据是新的金矿。本文将引导您使用Python编写一个简单的网络爬虫,从互联网上自动抓取信息。我们将介绍如何使用requests库获取网页内容,BeautifulSoup进行HTML解析,以及如何将数据存储到文件或数据库中。无论您是数据分析师、研究人员还是对编程感兴趣的新手,这篇文章都将为您提供一个实用的入门指南。拿起键盘,让我们开始挖掘互联网的宝藏吧!