
Python科学计算基础
关于科学计算的基础免费知识,欢迎大家订阅我的Python科学计算进阶专栏
勤奋的大熊猫
芯片设计及版图布局工程师
接专业问题咨询,有需求的可以私信我,价格可以商量。
展开
-
光学仿真小作品集
本文将展示一些作者本人平时自制的光学仿真小作品。原创 2023-04-20 08:24:55 · 745 阅读 · 0 评论 -
Python np.newaxis 用法
此外,上述操作,我们成功将原始三行两列的二维数据转换成了拥有三层深度,每一层上都拥有一行两列数据的三维数组。参数时,我们可以使用 : 符号替代剩余两个坐标轴上的数据个数,相对更为简便。函数时我们无可避免地需要指定剩余两个坐标轴的数据个数,而当我们使用。相当于对一维数组扩充了一个新的坐标轴,与。相当于对一维数组扩充了一个新的坐标轴,与。可以看到,结论与一维的情况类似,进行坐标轴占位一致。进行坐标轴占位一致。原创 2025-02-06 14:18:39 · 228 阅读 · 0 评论 -
Numpy 三种获取一维数组中元素数量的方法
本文简单介绍一下三种快速获取一维数组中元素数量的方法。原创 2025-01-14 14:13:58 · 335 阅读 · 0 评论 -
Python 自定义类型提示 from __future__ import annotations
使用字符串有个弊端,就是我们每次都需要多打一对字符串引用符号 ‘’。为了一劳永逸解决这个问题,可以在开头引入。类型,就已经开始了对它的引用。为了解决这一问题,我们提供三种方法。因此,我们想给它加上一个数据类型提示。方法有一个参数,他也是一个我们正在定义的。,但是上述代码运行时会提示我们。类型即指代的是我们当前定义的。使用字符串对它进行标记说明。这是因为我们还未创建完成。原创 2024-06-07 16:28:09 · 750 阅读 · 0 评论 -
文件处理 pathlib 模块
通过这种方式,我们可以获取到当前文件所在每一级目录的名称,后续操作起来就更为容易了。属性用来获取文件的多个后缀名,并将它们按照序列存放在列表对象中,本例中恰好有一个后缀名,因此,仅一个后缀名被存放进了列表中。有些时候,我们需要知道我们当前引用的路径是相对路径还是绝对路径,可以使用下面的代码。可以看到,此时我们将文件夹目录和文件名称进行了拼接,相当于使用了。还有很多较为常用的方法,这里仅作抛砖引玉,熟练掌握这个模块后,它作为一种高级的文件操作包,相较于传统的。,这其实表示的是,我们当前的文件目录是位于。原创 2024-06-04 16:47:38 · 426 阅读 · 0 评论 -
Python os.path.isfile() 和 os.path.isdir() 函数
用来判断所给的参数是否是一个文件夹。可能说道这里,大家都觉得很简单啊,这不一下子学会了吗?事实可能并非如此,我们来看一个例子。均没有被执行,这不应该啊,明明有一个文件夹和文件的,为什么判断后的输出没有结果呢?在网上看到很多人对这两个函数的用法有过说明,然而感觉都没有说到它们的本质,这里特来记录一下。,即文件和文件夹的名称,并不包含文件和文件夹的目录,考虑以下情况,在一个根目录下存放着一个。因此,我们需要对上述代码稍作改动。用来判断所给参数是否一个文件。可以看到,此时就有输出结果了。的结果,得到的仅仅是。原创 2024-05-29 16:35:27 · 1386 阅读 · 0 评论 -
Python Vector 操作
我们知道,平面内矢量叉乘方向是垂于与平面的方向,因此,二维矢量叉乘得到的结果是一个数,而这个数实际上的意义是其他两个方向为。由于减法与加法互为逆运算,减法也可以看作是加上也给负数,因此,矢量减法的做法可类比上述矢量加法。显然,简单的数组相乘并不等同于矢量点乘,少了一步求和运算。中的数组本身就可以看作是一个矢量,因此,矢量加法就是数组简答地相加。中,我们可以很容易得到结果,这里特来介绍一下。模块用法的可以学习本人专栏 -------作为编程语言,这是因为不同于其他编程语言,中有更简单的方式------原创 2024-05-14 10:35:02 · 970 阅读 · 0 评论 -
Python 正则表达式 (?=...) 和 (?<=...) 符号
内部表达式(匹配的内容)必须是固定长度的,意思就是。注意,以肯定型后视断言开头的正则表达式,匹配项一般不会位于搜索字符串的开头。匹配时,匹配成功,但不消耗字符串中的任何字符。的匹配内容出现在当前位置的左侧,则匹配。这叫做 肯定型后视断言。为了实现这一目标,我们可以采用刚才我们提到的后视和前视。今天遇到了一个比较棘手的问题,于是终于打算要对正则表达式中的。符号可以被替换为任意的符号,这里为了方便说明问题,我们将。字符,但是由于它是前视断言,即向前搜索,而我们的匹配项中。可以看到,此时,结果中包含了两端的。原创 2024-05-07 11:52:09 · 624 阅读 · 0 评论 -
Python 正则表达式 *, + 和 ? 符号
符号类似于贪婪模式,会尽可能匹配到所有能够匹配到的字符。到任意次重复, 尽量多的匹配字符串。上述的结果显而易见,当字符串为单个字符。结果显而易见,这里不做过多解释了。对它前面的正则式匹配。对它前面的正则式匹配。对它前面的正则式匹配。原创 2024-05-07 10:58:46 · 551 阅读 · 0 评论 -
Python 正则表达式 (...) 符号
我们这里做一个延申,如果要匹配到上述整个字符串该怎么办呢?中的字符串数量从三个到四个时,就匹配不到任何结果了,因为。,显然它可以匹配除了 \n 字符以外的任意三个字符的组合。有些小伙伴可能会问,那既然没有意义,为什么还需要使用。符号在正则表达式中的用法,其用来匹配除了。会匹配到后面的三个字符。对比上述所有示例,我们可以看到,对于。用来匹配括号内的任意正则表达式。很明显,也匹配到了开头的三个字符。字符以外的单个字符。显然,匹配到的是开头的三个字符。,因为当匹配的时候我们开头有了。,最终将二者的组合字符串。原创 2024-05-07 10:42:48 · 523 阅读 · 0 评论 -
Python 正则表达式 re . 符号
字符串,无法完成匹配,对于其他字符串可以进行匹配。且会获取到第一个能够匹配到的对象。:(点号) 在默认模式下,匹配除换行符以外的任意字符。,它将匹配包括换行符在内的任意字符。原创 2024-05-07 10:11:50 · 432 阅读 · 0 评论 -
Python 正则表达式 re.findall()
扫描整个 字符串,找到所有满足匹配样式的字符,将它们集合在一起以列表形式返回。其中这个返回的列表包含空的结果(没有匹配到的结果)。通过这种匹配方式,我们成功地找出了一个字符串中的所有数字对象,并将它们集合起来作为一个列表对象进行了返回。然而事与愿违,我们获得的是四个独立的数字,怎么办呢?当我们找不到匹配对象时会返回一个空的列表对象。可以看到,我们成功地获取到了我们需要的数字。我们是想通过匹配获取。函数的用法说明一致。原创 2024-05-07 09:59:10 · 2425 阅读 · 0 评论 -
Python 正则表达式 re.match() 和 re.search() 方法
扫描整个 字符串,找到匹配样式的第一个位置,并返回一个相应的 匹配对象。如果没有匹配,就返回一个。该函数在字符串的起始位置处进行匹配,若匹配到则返回该值,若没有匹配到,则返回。并不处于被匹配字符串的起始位置,因此匹配不到,所以返回值为。可以匹配到,但是不在字符串的起始位置,仍旧会返回。可以看到,我们成功地在字符串起始位置处匹配到了字符。注意这和找到一个零长度匹配是不同的。时,会匹配到从左向右的第一个字符对象。时,即使需要被匹配的字符串中含有。函数时我们成功地匹配到了字符。函数的用法说明一致。原创 2024-05-07 09:54:58 · 841 阅读 · 0 评论 -
Python 正则表达式 re.sub()
中的第一个参数是需要被替换的字符或字符串,第二个参数是要被替换成的字符或字符串。这两种方法本质上都是。表示的是字符串中需要替换的字符或字符串,而不是要替换成的字符或字符串。至此,我们完成了正则表达式的替换说明。时都会遇到字符串替换的问题,除了使用内置函数。方法外,这里特来记录一下正则表达式的用法。方法的返回值才是替换后的字符串。也很好处理,只需要把被替换字符变为。方法不改变原始字符串变量的值。我们想要将这个字符串中的字符。相信很多小伙伴在使用。,我们该怎么操作呢?原创 2024-05-07 09:05:58 · 1405 阅读 · 0 评论 -
Python 寻找一个一维数组中最接近某个值的元素
今天做仿真的时候遇到了一个问题,就是如何获取一组数据中最接近某个元素的值。至于,二维或者三维数组可以先展平为一维数组,或者使用循环结构,这里不再做展示。可以看到,我们也成功获取到了想要的结果。可以看到,我们成功获取到了想要的结果。我们想要获取到这中间最接近。比如,这里有一个一维数组。如果我们想要获取到最接近。原创 2024-02-21 16:08:39 · 1522 阅读 · 0 评论 -
Python 将二维数组或矩阵变为三维
然而,很多时候,我们也需要对二维矩阵进行操作,这里特来介绍一下如何将二维矩阵扩展为三维。方法我们依然可以做到这一点。之前,我们已经介绍过了。原创 2024-02-18 17:34:17 · 2944 阅读 · 0 评论 -
Python 将一维数组或矩阵变为三维
可以看到,此时我们得到的三维数组,或者说矩阵所有的元素都是沿着。关于为什么是这样,可以参考。原创 2024-02-18 17:25:47 · 1297 阅读 · 0 评论 -
Python 矩阵乘法
并且当我们使用 @ 符号进行矩阵乘法运算时,我们无需手动进行矩阵转置操作。它们不能够用来计算标量乘法,比如当我们运行如下代码时就会报错。可以看到,两种方式最终获取到的结果是一致的。包来进行,事实上,我们可以使用三个函数来实现。函数是可以用来计算标量乘法的。这里我们简单说一下它们的区别,对于矩阵乘法,我们推荐使用。中如何进行矩阵乘法运算。原创 2024-02-18 11:11:20 · 716 阅读 · 0 评论 -
Python 获取数组中等于给定值大小的值
到这里,是不是体会到了标题真正的含义了?有人也许会说,你这里如果是 5.5 几几几就找不到值了,然而这种担心是多余的,因为实际中,往往会存在很多个接近 5 的小数,总会有值的,如果没有,那说明确实也没有数字接近 5。我们想要获取后面一列数字中接近 5 的值所对应的第一列数字的值,但是我们发现后面一列数字中有很多值满足条件,那么如何找出前一列中唯一对应的数字呢?相比于之前,我们得到的是一个数组,而不再是一个数罢了。可以看到,我们也得到了想要的结果,看到这里,感觉还是在扯,别着急,看一个下面的例子。原创 2024-01-15 15:50:19 · 562 阅读 · 0 评论 -
Python np.argsort() 函数的用法
轴排序,因此得到上述结果。不理解的小伙伴可以阅读。:可选参数,选择需要做差的轴,默认的是最后的轴。可以看到输出的结果对应排序后的索引值,原数组。经过排序后的顺序从小到大应该为。:输入数组,该数组将会被排序。:沿着哪个轴排序,默认轴为。是一个数组时,这个值制定了。数组中元素的索引值顺序为。:排序方法,可以选择。返回值:返回一个数组。,这里不做过多介绍。原创 2023-11-21 11:01:31 · 891 阅读 · 0 评论 -
Python matplotlib Linecollection() 函数用法
今天看到了这个函数的用法觉得很有意思,因为通常,如果我们想要在。然而当想要绘制的线条逐渐多起来的时候,使用。循环会极大拖慢程序运行的速度,此时我们就可以使用。中绘制多条线条,通常我们的做法是使用。函数来解决这一问题。原创 2023-11-21 10:41:00 · 1077 阅读 · 0 评论 -
Python scipy.spatial.distance.squareform() 函数的用法
函数实际上将我们传递进入的以为距离数组变成了也给正方形矩阵,且矩阵对应索引位置上的元素值等于两点之间的距离,而这些位置的索引值与点的索引值一致,且关于主对角线对称,对角线上的元素全部为。:返回值,如果传递进入一个压缩距离矩阵,冗余的矩阵就会被返回,如果传递进入一个冗余的矩阵,压缩距离矩阵会被返回。其中,每一步可以沿着向量空间中的任意一个向量移动,但是每个向量只能被经过一次。我们可以看到,最终的结果又变回了压缩矩阵(一维数组)的形式。个向量开始,已经有多少对向量已经被移动过了,即已经不需要再移动。原创 2023-11-21 09:54:59 · 574 阅读 · 0 评论 -
Python scipy.spatial.distance.pdist() 函数的用法
今天遇到了一个函数,,一直看看了一个小时终于让我把这个函数的逻辑给get到了。这里特来分享一下。关于这个函数本身可供选择的参数很多,这里先不做过多说明,之后如果博主有时间,会继续完善。我们先来看一个示例。原创 2023-11-21 09:25:38 · 1374 阅读 · 0 评论 -
Python itertools模块中的combinations() 函数用法
输入数据,数据应该是可迭代的。返回值:从输入的可迭代数据。的子序列,结果如上面显示。从输出的结果可以看出,,然后返回它的长度为。原创 2023-11-20 17:17:56 · 2720 阅读 · 0 评论 -
Python 比较两个数组中元素的大小,并输出两个数组中较大值组成的数组
数组,我们想要对它们中的所有对应位置的元素进行大小的比较,并且将它们中间比较大的值组合起来输出成一个新的数组,该怎么实现呢?数组中的所有对应位置的元素进行对比,并输出对应的布尔值。其余的代码浅显易懂,这里就不做过多解释了。今天遇到了一个问题,就是如果我们有两个。原创 2023-08-25 09:57:10 · 3188 阅读 · 0 评论 -
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.al
关于 .all() 与.any() 的用法可以参考这篇------中的所有元素看做一个整体,此时的输出结果只会出现一个布尔值。可以看到此时的输出结果提示了我们这种错误,这是因为,当我们写成。采用上面的写法,我们就可以得到我们想要的结果,由此可得,将数组。会自动对比数组中的每一个值与所给值的大小,而一旦将数组。元素,如果存在,则返回一个布尔值,显然,这里的。然后我们想要对其中的所有元素进行判断,所有小于。读者可以自行尝试,以下代码也是行不通的。的元素对应的布尔值为。的元素对应的布尔值为。原创 2023-08-22 10:50:19 · 10948 阅读 · 0 评论 -
np.diff()函数
这里记录一下np.diff()算法的用法。原创 2023-04-25 11:32:25 · 7780 阅读 · 2 评论 -
np.argmin()函数
可选参数,如果被提供,那么结果就会被插入到这个数组中,注意该数组一定要有合适的形状和数据类型。函数时也会优先将输入数组展平,然后找出数组中最小值对应的索引值并返回,因此我们得到的结果是。时,得到的数组的维度会与输入数组保持一致,为了保持维度,被去除的那个维度上面的维度退化为。:可选参数,默认的是去展平数组,此外就是沿着特定的方向。参数时,即使我们的输入数组为二维数组,使用。轴方向找出每一列元素中的最小值,因此输出为。轴方向找出每一行元素中的最小值,因此输出为。返回值:数组的索引组成的数组。原创 2023-04-23 10:47:32 · 3263 阅读 · 0 评论 -
Python args 参数用法
以前写代码的时候也用到过args参数,但是时间久了就有些忘了,今天用的时候遇到了一个错误,这里特来记录一下。原创 2023-04-21 17:03:49 · 1492 阅读 · 0 评论 -
Python 快速扩充一维数组到指定元素个数
今天仿真的时候遇到了一个问题,就是如何将一个一维数组扩充到想要的元素个数。原创 2023-04-19 17:11:38 · 687 阅读 · 0 评论 -
Python 生成对角元素逐渐增大的数组
今天方针的时候遇到了一个问题,那么就是该如何生成如下所示的数组呢?当然了,我们也可以对上述数组中的所有元素进行一个归一化处理。可以看到,我们得到了我们想要的结果。原创 2023-04-18 10:59:50 · 135 阅读 · 0 评论 -
Python 生成多行重复数据
Python 生成多行重复数据原创 2023-03-11 13:00:12 · 1104 阅读 · 0 评论 -
np.vstack()函数
np.vstack()函数各个参数意义:tup:输入的参数应该为一个元组,即(tuple)对象。有返回值,返回竖直堆叠后的数组。这里我们举一个例子,代码如下:# -*- coding:utf-8 -*-"""author: 15025time: 2021/6/1 18:32software: PyCharm"""import numpy as npclass NumpyStudy: def verticalStackArray(self):原创 2021-06-02 00:38:59 · 29852 阅读 · 1 评论 -
__version__函数
__version__函数原创 2020-11-22 21:11:18 · 4204 阅读 · 3 评论 -
np.concatenate()函数数组序列参数
np.concatenate()函数数组序列参数原创 2023-02-24 08:35:24 · 1555 阅读 · 0 评论 -
np.meshgrid()函数
np.meshgrid()函数原创 2023-02-23 19:57:27 · 736 阅读 · 3 评论 -
Python tan函数图像绘制,不带有极值的线条
Python tan函数图像绘制,不带有极值的线条原创 2022-09-15 10:08:19 · 3544 阅读 · 0 评论 -
Python进制转换
Python进制转换十进制转换为二进制十进制转换为八进制十进制转换为十六进制附录这里以十进制数10为例,转换为其他进制。十进制转换为二进制# 初始化整数10num = 10# 将整数10转换为二进制表示print(bin(num))# 去掉二进制表示前的标识符0bprint(bin(num)[2:])"""result:0b10101010"""从上述的结果可以看到,我们成功地将十进制下的整数10转换为了二进制下的1010。然而这不够,我们再来看一个例子,如果我们需要将100转原创 2022-04-26 11:16:23 · 11100 阅读 · 2 评论 -
Python round()函数的严谨用法
今天在Pycharm编译器中使用round()函数的时候编译器提示了警告,后经修改去掉了警告,这里做一下记录。代码如下:import numpy as npx = np.array([0, 1])y = np.sum(np.sin(x))print(f"x四捨六入五留双后的值为{round(y, 3)}")编译器提示信息:事实上,在有些情况下,编译器会直接报错,代码如下:import numpy as npx = np.array([1])y = x + 0.2732print原创 2021-12-22 17:38:30 · 3479 阅读 · 0 评论 -
python 复数基础
在python中复数的处理相对简单,定义一个复数通常来说有两种方式,代码如下:NB(注意): # 后面的部分表示输出结果。class Debug: def complexDefine(self): # method 1 x = 1j print(x) # 1j print(type(x)) # <class 'complex'> # method 2 x1 = complex(1, 2)原创 2020-08-25 16:30:55 · 1154 阅读 · 0 评论