随笔分类 -  python编程

该分类用于存放python编程相关的一些知识点和笔记
摘要:PCA主成分分析的Python实现接上一篇文章介绍的矩阵特征分解,本文介绍了矩阵特征分解在主成分分析(PCA)算法中的应用。对于PCA算法,最直观的理解就是,在高维数据中找到一个低维的空间,使得所有的数据点投影到该低维空间之后尽可能的分离。 阅读全文
posted @ 2024-12-06 11:12 DECHIN 阅读(564) 评论(0) 推荐(0) 编辑
摘要:Numpy本征值求解本文介绍了一下使用Numpy计算矩阵的特征值求解和特征值分解问题。Numpy的eig特征求解函数可以直接输出给定矩阵所有的特征值,和对应的所有特征列向量所构成的矩阵。再使用Numpy的矩阵求逆函数,即可得到相关矩阵的EVD特征值分解。 阅读全文
posted @ 2024-12-04 10:51 DECHIN 阅读(295) 评论(0) 推荐(0) 编辑
摘要:Jax Jit模式下的Array输出本文仅介绍一个可以在Jax的Jit即时编译模式下,也能够正常通过print打印函数来输出Jax Array内容的方法。 阅读全文
posted @ 2024-11-26 17:01 DECHIN 阅读(55) 评论(0) 推荐(0) 编辑
摘要:Jax中关于NonZero的使用在使用Jax的过程中,有时候会遇到函数输出是一个动态的Shape,这种情况下我们很难利用到Jax的即时编译的功能,不能使得性能最大化。这也是使用Tensor数据结构来计算的一个特点,有好有坏。本文介绍了Jax的另外一个函数NonZero,可以使得我们能够编译那些动态Shape输出的函数。 阅读全文
posted @ 2024-11-21 11:15 DECHIN 阅读(84) 评论(0) 推荐(0) 编辑
摘要:Jax中关于Device ID的配置本文主要介绍了2个在Jax框架中配置显卡Device ID的方法。第一种方法可以使用环境变量进行配置,对于众多的深度学习框架都是可以兼容的。而第二种方案是在Jax即时编译的过程中通过Jax生成的Device对象来控制数据的传输和函数执行的Device ID。 阅读全文
posted @ 2024-11-05 16:47 DECHIN 阅读(46) 评论(0) 推荐(0) 编辑
摘要:Python实现多维傅里叶变换继前一篇文章中的一维傅里叶变换,本文介绍了多维傅里叶变换的物理图像和基本原理,并附带了Python简单实现。并将Python的计算结果与Numpy中已经实现的二维傅里叶变换的结果进行对比。 阅读全文
posted @ 2024-09-26 11:04 DECHIN 阅读(510) 评论(2) 推荐(1) 编辑
摘要:Python计算傅里叶变换本文介绍了离散傅里叶变换和快速傅里叶变换的基本原理及其对应的Python代码实现,并将计算结果与numpy所集成的fft函数进行对比。其实现在FFT计算的成熟工具已经有很多了,不论是CPU上scipy的fft模块还是GPU上的cufft动态链接库,都有非常好的性能。但还是得真正去了解计算背后的原理,和相关的物理图像,才能更恰当的使用这个强大的工具。 阅读全文
posted @ 2024-09-25 14:50 DECHIN 阅读(681) 评论(1) 推荐(2) 编辑
摘要:Python存储与读写二进制文件本文介绍了一种在Python中将Numpy数组转存为一个紧凑的二进制格式的文件,及其使用内存映射的形式进行读取的方案。一个二进制的数据流,不仅可以更加方便页形式的内存映射,相比于传统的Numpy单精度浮点数数组还有一个可哈希的特性。总体来说是一个对于高性能计算十分友好的存储格式,在cudaSPONGE中作为一个分子动力学模拟轨迹输出的格式使用。 阅读全文
posted @ 2024-09-09 17:49 DECHIN 阅读(410) 评论(0) 推荐(0) 编辑
摘要:解决auditwheel repair过程rpath被修改的问题在开源Python项目中,如果使用到了Cython或者CUDA C++等需要编译的后端技术,那么要传到pypi上就需要经过一个PEP标准的审查。要通过审查,就要经过多个版本的Python的构建,以及auditwheel修复的过程。本文解决了一个auditwheel修复过程中有可能出现的rpath路径索引问题。 阅读全文
posted @ 2024-09-03 09:34 DECHIN 阅读(153) 评论(0) 推荐(0) 编辑
摘要:Python中的分布式框架Ray的安装与使用本文介绍了基于Python的分布式框架Ray的基本安装与使用。Ray框架下不仅可以通过conda和Python十分方便的构建一个集群,还可以自动的对分布式任务进行并发处理,且支持GPU分布式任务的提交,极大的简化了手动分布式开发的工作量。 阅读全文
posted @ 2024-08-28 11:23 DECHIN 阅读(1707) 评论(0) 推荐(0) 编辑
摘要:PEP 508:为不同版本Python指定不同依赖如果使用Python第三方包的某一个版本有问题,而不同版本Python所对应的软件最新版本又不一致,这种情况下如何在requirements.txt文件中指定软件最高版本是非常重要的。这里根据PEP 508的规范,做了一个Numpy版本要求numpy<=1.21.6 || 1.28>numpy>=1.23的示例。 阅读全文
posted @ 2024-08-27 10:31 DECHIN 阅读(149) 评论(0) 推荐(0) 编辑
摘要:解决pypi上传轮子unsupported platform tag &#39;linux_x86_64&#39;问题对于一个纯Python的项目,从构建到发布是比较容易的。但是如果构建的轮子中含有C代码或者生成的动态链接库,那么构建发布有另外一套规则。我们需要经过manylinux平台的验证,以及动态链接库的固化等过程,还需要当心动态链接库的存放地址等信息。本文主要是提供了一个流程化的思路,具体操作对于不同的项目和平台来说差异是比较大的。 阅读全文
posted @ 2024-08-13 10:17 DECHIN 阅读(84) 评论(0) 推荐(0) 编辑
摘要:Cython将Numpy数组转为自定义结构体这篇文章介绍了在Cython中定义结构体,并在Python的Numpy数组/MemoryView和自定义结构体之间进行数据转换的方法。Cython有着非常Pythonic的编程范式,又具有接近于C语言的性能,对于Python开发者而言确实是一个很棒的工具。 阅读全文
posted @ 2024-08-07 09:36 DECHIN 阅读(188) 评论(0) 推荐(0) 编辑
摘要:使用Cython调用CUDA Kernel函数从Python接口调用GPU进行加速的方案有很多,包括Cupy和PyCuda以及之前介绍过的Numba,还可以使用MindSpore、PyTorch和Jax等成熟的深度学习框架,这里介绍了一种直接写CUDA Kernel函数的方案。为了能够做到CUDA-C和Python编程的分离,这里引入了Cython作为中间接口,这样一来Python开发者和C开发者可以去共同开发相应的高性能方法。 阅读全文
posted @ 2024-08-02 14:32 DECHIN 阅读(296) 评论(0) 推荐(0) 编辑
摘要:h5py文件写入之——flush和updatehdf5是一个在量子化学和分子动力学模拟中经常有可能被用到的一种数据存储格式,得益于其良好的压缩率和完整性校验,一定程度上保障了其数据/轨迹存储的可靠性。本文介绍了关于hdf5文件的两个操作:更新已有的hdf5文件中的数据内容,以及flush同步更新的方法。 阅读全文
posted @ 2024-07-29 11:17 DECHIN 阅读(228) 评论(0) 推荐(0) 编辑
摘要:Cython与C函数的结合这篇文章介绍了Python-Cython-C三种语言的简单耦合,以Cython为中间接口,实现Python数据传到C语言的后端执行相关计算。这就相当于可以在Python中调用C语言中的指针功能来进行跨维度的数组运算,至于性能依然存在优化空间,这里仅仅做一个简单的功能演示。 阅读全文
posted @ 2024-07-25 15:14 DECHIN 阅读(239) 评论(0) 推荐(0) 编辑
摘要:使用Cython加速谐振势的计算本文介绍了一下使用Cython对Python/Numpy实现的函数进行加速的一个简单案例,模型使用的是一个弹性系数全同的谐振势,然后计算总势能。从计算结果来看,使用Cython确实可以获得更接近于C语言的速度,并且编程逻辑还可以大幅的保留Python的语法。 阅读全文
posted @ 2024-07-24 14:52 DECHIN 阅读(54) 评论(0) 推荐(0) 编辑
摘要:Python循环控制本文介绍了Python编程语言中关于for循环和if条件控制的一些基本使用。包含了单层循环的退出机制和多层循环的退出机制,使得我们在满足特定条件时,可以直接结束多层循环。 阅读全文
posted @ 2024-07-15 17:31 DECHIN 阅读(368) 评论(0) 推荐(1) 编辑
摘要:一个用来画拉氏图的简单Python脚本这里我提供了一个用于画拉氏图的Python脚本源代码,供大家免费使用。虽然现在也有很多免费的平台和工具可以用,但很多都是黑箱,有需要的开发者可以直接在这个脚本基础上二次开发,定制自己的拉氏图绘制方法。 阅读全文
posted @ 2024-07-05 16:04 DECHIN 阅读(463) 评论(0) 推荐(0) 编辑
摘要:Cython编译报错“numpy/arrayobject.h: No such file or directory”解决方案本文介绍了一个在使用Cython进行Python高性能编程时有可能遇到的一个问题,就是找不到的对应的C语言的头文件,例如numpy中的一些头文件。解决思路就是先在本地找到相应的头文件路径,然后将其添加到编译器的环境变量中即可。 阅读全文
posted @ 2024-06-26 10:03 DECHIN 阅读(327) 评论(1) 推荐(0) 编辑