亚灿网志 - 📖 学习笔记
type: channel
link: https://blog.manyacan.com/category/study/
items: 「PINNs」求解Burgers方程
items: 「PINNs」初识物理信息神经网络
items: 「EPANET+WNTR」管网水质模拟
items: 「图论入门」从基础概念到NetworkX
items: 上帝公式——Euler's formula
items: Python数据分析——以我硕士毕业论文为例
items: Study with engVid [02]
items: 1000 Conversation in English [01]
items: Study with engVid [01]
items: Accumulation of Learning English [05]

「PINNs」求解Burgers方程
type: item
date: 2024-11-24T21:38:00+08:00
description: 🖋️ PyTorch 的自动微分机制在进行PINNs代码实战前，有必要对 PyTorch 的自动微分机制，也就是autograd 模块的实现进行复习。它使得神经网络中的梯度计算变得非常简单和高效。以下是复习自动微分机制的基本概念和步骤：张量及梯度追踪 (requires_grad=True)在 PyTorch 中，张量（Tensor）是主要的数据结构，类似于多维数组。自动微分机制会记录对张量的操作以构建计算图，但前提是张量需要启用梯度追踪。这可以通过设置 requires_grad=True 来完成：x = torch.tensor(2.0, requires_grad=True) t = torch.tensor(3.0, requires_grad=True)这段代码创建了两个张量 x 和 t，并开启了梯度追踪。这样在计算过程中，PyTorch 会自动记录对 x 和 t 的操作，以便在之后计算梯度。定义函数并构建计算图PyTorch 会基于操作来构建计算图。每个操作都创建一个节点，并将输出作为另一个节点的输入。这样，计算图会记录下从输入到输出的所有依赖关系：f = x ** 2 + 3 * x * t + t ** 2这定义了一个函数：$$ f(x, t) = x^2 + 3xt + t^2 $$由于 x 和 t 都开启了梯度追踪，f 也会有梯度属性，并且 PyTorch 会自动构建计算图。计算梯度为了得到 f 对 x 和 t 的偏导数，我们使用 torch.autograd.grad 函数。它的常用参数包括：outputs: 需要求导的输出张量，这里是 f。inputs: 需要求导的变量，这里是 [x, t]。grad_outputs: 当 outputs 是标量时通常设为 1，表示链式法则中的外部导数。create_graph: 是否保留计算图。通常在二阶或更高阶导数计算时需要设为 True。Tips / 提示grad_outputs 参数在 PyTorch 中是用于指定目标张量 outputs 的“外部导数”（或梯度）：在微积分中，链式法则用于计算复合函数的导数。假设我们有两个变量 $y$ 和 $z$ ，且它们之间存在如下依赖关系：$$ z = f(y), \quad y = g(x) $$那么，如果我们要计算$\frac{\partial z}{\partial x}$，可以使用链式法则得到：$$ \frac{\partial z}{\partial x} = \frac{\partial z}{\partial y} \cdot \frac{\partial y}{\partial x} $$在 PyTorch 的 autograd 中，如果我们想要计算 z 对 x 的梯度，grad_outputs 就提供了“外部导数” $\frac{\partial z}{\partial y}$，从而帮助 autograd 计算梯度。这里设置设置grad_outputs=torch.ones_like(f)其实就是另“外部导数” $\frac{\partial z}{\partial y}=1$.gradients = torch.autograd.grad( outputs=f, inputs=[x, t], grad_outputs=torch.ones_like(f), create_graph=True )这行代码会返回 f 对 x 和 t 的偏导数，并将结果存储在 gradients 中。获取偏导数结果print("df/dx:", gradients[0]) # df/dx: tensor(13., grad_fn=<AddBackward0>) print("df/dt:", gradients[1]) # df/dt: tensor(12., grad_fn=<AddBackward0>)这将显示 f 对 x 和 t 的偏导数。根据上面 $f(x, t)$ 的定义，当 $x=2, t=3$ 时，可得：$$ \frac{\partial f}{\partial x} = 2x+3t=13, \frac{\partial f}{\partial t} = 3x+2t=12 $$矩阵、向量求导在 PyTorch 中，对矩阵或张量求导的过程可以理解为对每个元素进行逐元素（element-wise）求导。假设我们有两个张量 X 和 u，其中 u 是 X 的函数。X 的形状是 (2, 2)，即：# 假设 x 和 t 是这些值，直接设置 requires_grad=True x = torch.tensor([2.0, 3.0], requires_grad=True) t = torch.tensor([0.0, 1.0…

「PINNs」初识物理信息神经网络
type: item
date: 2024-11-23T09:31:00+08:00
description: 文章头图来自：CAI S, MAO Z, WANG Z, et al. 2021. Physics-informed neural networks (PINNs) for fluid mechanics: a review. Acta Mechanica Sinica [J], 37: 1727-1738.🥕 基本信息1、什么是物理信息神经网络？Expand / 拓展物理信息神经网络 (Physics-Informed Neural Networks, PINNs) 是一种结合物理学知识和深度学习的强大工具，特别适用于求解偏微分方程（PDE）等复杂物理问题。PINNs 将神经网络的泛化能力与物理定律结合，通过编码物理方程中的约束条件来指导神经网络的学习。这种方法特别适用于那些难以通过传统数值方法求解的复杂问题，比如流体力学、热传导、结构力学等领域。简单来说，可以理解为下图：开题报告2、PINNs的优势（最明显的两点）：Expand / 拓展总而言之，言而总之，PINNs有以下优点：少量数据需求：由于物理方程本身已经提供了大量的约束信息，PINNs 通常需要的训练数据较少，在小样本情况下仍能表现出较好的效果。可解释性：因为 PINNs 是基于物理方程的，解的可解释性比纯数据驱动的神经网络模型更强。🤔 初步认识目前主要有两种方式将物理信息嵌入到神经网络中。一种是将偏微分方程（Partial Differential Equations，PDE）的先验知识作为损失函数隐式地嵌入到神经网络中，称为软约束方式。另一种是将PDE的先验知识显式地嵌入到神经网络架构中，称为硬约束方式。方式思路特点典型代表缺点软约束将神经网络视为方程解的逼近器不依赖于标签数据、要求 PDE 具体形式和方程系数是完全已知的、通常用来求解单个方程实例PINNs难以平衡不同的损失函数项，目前主要采用网格搜索方法来确定每个损失函数项对应的权重系数，但对于损失函数项较多的PDE 需要繁琐的调参工作，效率很低。硬约束将物理方程的信息显式地嵌入到神经网络架构中利用少量得标签数据即可训练好神经网络-需要针对特定问题进行神经网络整体架构的设计，移植性、通用性较差下面，以软约束方式为例，来对PINNs有个初步的认识。介绍下图来自文章：KUMAR V, GLEYZER L, KAHANA A, et al. MyCrunchGPT: A chatGPT assisted framework for scientific machine learning[C]//,202310.48550/arXiv.2306.15551.，在我学习PINNs网络的初期，这个图片让我比较清晰地理解了PINNs到底是怎么基于神经网络来进行实现的。这个图片由三部分组成：神经网络：$\mathbf{NN}\left( w, b \right) $；偏微分方程：$\mathbf{PDE}:\mathcal{L} \left( \boldsymbol{u}\left( x,\,\,t \right) , \theta \right) =g$；损失函数：$\mathbf{LOSS}_{MSE}={\color[RGB]{0, 128, 255} \mathrm{MSE}_{\left\{ \mathrm{u}, \mathrm{BC}, \mathrm{IC} \right\}}}+{\color[RGB]{0, 255, 64} \mathrm{MSE}_R}$。下面将分别介绍这三个组成部分。注意：对于下面的内容，您需要有深度学习方面的基础。神经网络图片的左上部分，你可以看到输入项 $ x $ 和 $ t $（代表空间和时间的坐标）被输入到神经网络 $\mathbf{NN}$ 中，经过多层神经元和激活函数的处理，网络输出的是 $ u_{\text{NN}} $，也就是神经网络对未知函数 $ u $ 的预测解。这个过程可以理解为神经网络尝试拟合未知物理量，比如某个区域的温度、压力、速度等随时间和空间变化的分布。偏微分方程图片右上部分展示了如何使用自动微分（Automatic Differentiation）来获取神经网络输出 $ u_{\text{NN}} $ 相对于输入 $ x $ 和 $ t $ 的偏导数（例如 $ \frac{\partial u}{\partial t} $ 和 $ \frac{\partial^2 u}{\partial x^2} $）。自动微分是一种通过神经网络计算导数的高效方法，可以直接在网络中对输出变量进行求导，而不需要通过数值差分的方式。有了这些导数之后，我们可以将它们代入偏微分方程（PDE）中，检查网络解 $ u_{\text{NN}} $ 是否符合物理定律。偏微分方程通常…

「EPANET+WNTR」管网水质模拟
type: item
date: 2024-07-21T20:28:00+08:00
description: ❓ 需求分析首先展示下我的问题，以便分析本篇博客中的哪些步骤适用于你的需要。已知条件：有某地区管网的.inp文件，并且有该地区水源节点历史两个月的余氯时间序列数据。求解结果：得到该管网结构中所有节点在历史两个月中的余氯值，更准确的结果如下表展示所示：Time节点 01节点 02……节点 m时刻 012.564.28……2.56时刻 023.564.56……2.56…………………………时刻 n3.443.89……2.56🫡 基础知识什么是WNTR？简单来说：WNTR（Water Network Tool for Resilience）是由美国国家标准与技术研究院（NIST）开发的一套用于分析水分配系统的开源工具，用于模拟和评估给水管网系统的性能和恢复力。主要作用包括：模拟水分配系统、恢复力分析、情景分析，以及优化调度等。简单来说，WNTR就是基于Python的高级版EPANET。EPANET中的Patterns是干什么的？在EPANET中，"Patterns"（模式）是用来表示随时间变化的水需求、压力或其他参数的变化模式。模式是一个数组或一系列因子，这些因子用于调整基础需求或其他输入参数，以模拟系统在不同时间段的行为。应用场景：水需求模式：模式通常用于表示水需求的日变化。例如，居民区的用水需求在早晨和傍晚会有高峰，而在夜间会较低。通过设置不同时间段的需求因子，可以精确模拟真实的用水情况。泵操作模式：模式还可以用于控制泵的操作。例如，可以设置泵在特定时间段的运行速度或开启/关闭状态，以模拟不同的运行策略。压力调节模式：在某些情况下，模式也可以用于调节系统中的压力，模拟压力管理策略。举个例子：假设有一个居民区的用水模式，表示一天24小时内的需求变化：时间步长（小时）: 1 模式因子: [0.5, 0.6, 0.7, 0.8, 1.0, 1.2, 1.5, 1.8, 2.0, 1.8, 1.6, 1.4, 1.2, 1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.3, 0.4, 0.5]在这个模式中，0点到1点的需求因子是0.5，表示这段时间的需求是基础需求的50%。早晨6点到9点的需求因子是1.2到2.0，表示用水需求较高，为基础需求的120%到200%。🕹️ 具体步骤简要介绍在开始细致讲解前，先对整体的操作步骤进行一个大致总结，以便各位观众按需研究：以文本形式打开.inp文件，将管网水源节点的余氯时间序列添加为一个Pattern；在EPANET中打开这个.inp文件，将该Pattern与水源节点相关联，并进行相关设置；使用WNTR完成水力模拟并保存所有节点的水质数据。管网数据文件格式的调整在.inp文件中，可以将管网数据以文本的形式进行编辑，非常方便。那么第一步需要进行的操作就是：如果你的管网文件是.net格式，需要将其调整为.inp格式。这里有个注意点，将.net文件另存为.inp文件不能直接使用 File → Save As... 命令来操作，否则生成的文件会显示打开错误：正确的操作步骤为：File → Export → Network，这样导出的.inp文件才是完整并且可直接进行文本编辑的。将时间序列设置为Pattern完成上面的.inp文件格式转换后，就可以直接使用文本编辑工具（Notepad、VS Code等）打开并进行编辑了。在文件中直接搜索[PATTERNS]，定位到Pattern的存储位置，会有如下的字样：[PATTERNS] ;ID Multipliers ; 1 0.781 0.752 0.738 0.706 0.704 0.73 然后即可在后面进行Pattern的添加，例如：[PATTERNS] ;ID Multipliers ; 1 0.781 0.752 0.738 0.706 0.704 0.73 ; demo 1 0.986378898 0.974703668 0.976000916 0.980541283 0.97340642上面添加的Pattern名为demo，可以使用EPANET打开该文件进行查看：这里有个小问题，如果我的水源节点历史时间序列长度为2个月（60天）、每5分钟一个数据，那么一共会有60*24*(60/5)=17280条数据，也就是说我设置的Pattern长度也必须为17280。同时，还需要进行对应的时间设置：另外还需要将水源节点的余氯值与这个Pattern相关联：关于节点的两个属性：Initial Quality代表了水力模型起始运行那一刻的水质；Source Quality代表了水力模拟过程中，水源水质的变化情况。为什么要在EPANET中进行这些设置呢？就是因为我是用WNTR倒腾了几周还是会有各种各样的问题，一直没有解决，然后才采用了这种方法。…

「图论入门」从基础概念到NetworkX
type: item
date: 2023-12-12T12:42:00+08:00
description: 介绍图（Graph）是一种表示对象之间关系的抽象数据结构。图由节点（Vertex）和边（Edge）组成，节点表示对象，边表示对象之间的关系。图可以用于建模各种实际问题，如社交网络、交通网络、电力网络等。NetworkX是一个用Python编写的库，专门用于创建、操作和研究复杂网络的结构、动态和功能。它提供了简单易用的接口来处理图论和网络结构。NetworkX适用于处理大型网络结构，并提供了许多内置的图算法，如路径寻找、图的构建和修改、节点属性操作等。NetworkX官方文档（网站）：https://networkx.org/；使用pip安装：pip install networkx并回车。基本概念无向图（Undirected Graph）import networkx as nx # 创建一个无向图 G = nx.Graph() # 添加节点 G.add_node(1) G.add_nodes_from([2, 3]) # 添加边 G.add_edge(1, 2) G.add_edges_from([(2, 3), (1, 3)]) # 查看图的节点和边 print("图的节点: ", G.nodes(), "; 图的边: ", G.edges(), '.') # 可视化 nx.draw(G, node_size=500, with_labels=True)控制台输出结果 - 无向图有向图（Directed Graph）有向图的创建方式很简单，只需要把上面无向图的对象：# 创建一个无向图 G = nx.Graph()换成：# 创建一个有向图 G = nx.DiGraph()即可。控制台输出结果 - 有向图有权图（Directed Graph）创建有权图时需要添加权重信息，且可视化的代码略有不同：import networkx as nx import matplotlib.pyplot as plt # 创建一个带权重的无向图 G = nx.Graph() # 添加带权重的边 G.add_edges_from([ (2, 3, {'diameter': 1.0,'length': 12.0}), (1, 3, {'diameter': 2.0,'length': 10.0}), (2, 1, {'diameter': 3.0,'length': 8.0}) ]) # 提取权重信息 edge_weights = nx.get_edge_attributes(G, 'length') # 可视化图 pos = nx.spring_layout(G) # 选择布局算法，这里使用弹簧布局 nx.draw(G, pos, with_labels=True, font_weight='bold', node_size=700, node_color='skyblue', font_color='black') # 绘制权重标签 nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_weights) # 显示图形 plt.show() # 查看图的节点和边 print("图的节点: ", G.nodes(), "; 图的边: ", G.edges(data=True), '.')控制台输出结果 - 有权图邻接矩阵邻接矩阵（Adjacency Matrix）： 邻接矩阵是一个二维矩阵，其中的行和列分别对应图中的节点。矩阵的元素表示节点之间是否存在边。对于无向图，邻接矩阵是对称的；对于有向图，邻接矩阵不一定对称。# 获取邻接矩阵(默认是稀疏矩阵格式) adj_matrix = nx.adjacency_matrix(G) # 将稀疏矩阵转换为密集矩阵(如果需要) dense_adj_matrix = adj_matrix.todense()请注意，如果你的图是有向图，你可以使用 nx.adjacency_matrix(G, directed=True) 来获取有向图的邻接矩阵。如果你想要自定义矩阵的表示方式，你可以使用 toarray() 方法将稀疏矩阵转换为 NumPy 数组。关联矩阵在 networkx 库中，nx.incidence_matrix(G) 用于生成图 G 的关联矩阵（Incidence Matrix）。关联矩阵和邻接矩阵不同，它是一种表示图中节点与边之间关系的矩阵。对于一个包含 $ N $ 个节点和 $ M $ 条边的图，其关联矩阵是一个 $ N \times M $ 的矩阵，其中矩阵的行对应图中的节点，列对应图中的边。关联矩阵中的元素定义如下：如果边 $ e $ 与节点 $ v $ 相连，则矩阵中对应位置的值为 1（或者对于有向图，出边为 -1，入边为 1）；如果边 $…

上帝公式——Euler's formula
type: item
date: 2023-07-14T19:56:00+08:00
description: 定义什么是欧拉公式？$$ e^{i\pi}+1=0 $$这个公式将：$e$：自然对数的底；$i$：虚数的单位；$\pi$：圆周率结合到了一起，优美巧妙，因此也被称为“上帝公式”。Quote / 参考维基百科：欧拉公式。复数i与自然常数e在推导与证明欧拉公式之前，有必要对其中两个重要组成部分：复数——$i$；自然常数——$e$进行复习。复数i复数$i$的定义其实很简单，就是：$$ i^2=-1 $$最初提出复数的那一帮人，就是因为解高次方程的时候会遇到这样的情况：$$ x^2+1=0 $$虽然在我们对于自然数的理解下，这样求解出来的数没有任何实际意义，但是其在数学中却是真实存在的。数学家们之间的解方程大赛对于复数这个在自然界不存在，但是在数学中却是存在的东西，笛卡尔将其命名为Imaginary number——想象中的数字。意义所以，复数在数学中的意义到底应该是什么呢？仅仅就是为了解方程吗🤔？我们又是如何来表达它呢？接下来，让我们通过一个小例子来认识下它：从自然数1开始，将其与$i$相乘，得到了：$$ 1×i=i $$在此基础上，然后再乘一个$i$：$$ 1×i×i=-1 $$可以看到，自然数1再经过两次乘$i$后，完成了反向。如果再乘上两个：$$ 1×i×i×i×i=1 $$之后会发现，1竟然又回到了最初的起点。看到了这里，你的心里可能已经猜到了😆——这个过程，像极了旋转：所以，这个时候我们很容易会发现复数虚部所在的轴与实部所在的轴构成了一个平面。在这个平面中，一个复数的实部为x轴，虚部$i$为y轴，两者张成了一个二维复平面。对于一个复数$4+3i$，其在复平面上的表达类似于一个向量：运算加法运算在复平面中，复数的运算法则遵循矢量运算法则（平行四边形法则，实部与实部相加，虚部与虚部相加），例如：$$ (-1+2i)+(2-1i)=1+i $$乘法运算令：$$ y=\begin{cases} 1, n=0\\ \left( 1+i \right) ^n, n>0\\ \end{cases} $$计算得：$$ y_{n=0}=1 \\ y_{n=1}=1+i \\ y_{n=2}=\left( 1+i \right) ^2=1+2i+\left( i \right) ^2=2i \\ y_{n=3}=\left( 1+i \right) ^3=2i\times \left( 1+i \right) =-2+2i \\ y_{n=4}=\left( 1+i \right) ^4=2i\times 2i=-4 \\ ... $$依次绘制出$y_{n=0}、y_{n=1}、y_{n=2}、...$，会发现：$y_{m-1}$乘上$1+i$后变成了$y_{m}$。相比之下，$y_{m}$由$y_{m-1}$所代表的向量旋转45°，且模长变为原来得$\sqrt{2}$倍得来。其中45°是$1+i$与x轴的夹角，$\sqrt{2}$是$1+i$在复平面的模长。由此，我们可以进行一个推广：在复平面上，一个复数$b=m+ni$乘上任意一个复数$a$，其几何含义为：让这个复数$a$所代表的向量进行旋转并缩放，旋转的角度（复数$b$的辐角，即$m+ni$与x轴的夹角）为$arctan\frac{n}{m}$，缩放倍数（复数$b$的模长）为$\sqrt{m^2+n^2}$。一个有趣的现象，如果我们在复平面上绘制出$(1+i)^n$所代表的点：参考Python绘图代码def get_value(n): x = (1 + 1j) ** n return x.real, x.imag def plot_arrow(x, y, ax=plt, lines=True): if lines: ax.vlines(x, 0, y, 'r', '--') ax.hlines(y, 0, x, 'r', '--') ax.arrow(0, 0, x, y, color='cyan', head_width=0.2, fc='y', length_includes_head=True ) def plot_text(x, y, ax=plt): valign, halign = None, None if y > 0: text_y = f'{y}i' if x != 0: text_y = '+' + text_y y += .2 valign = 'bottom' elif y == 0: text_y = '' y += .2 valign = 'bottom' else: text_y = f'{y}i' y -= .2 valign = 'top' if x > 0: text_x = f'{x}' x += .2 halign = 'left' elif x …

Python数据分析——以我硕士毕业论文为例
type: item
date: 2023-03-10T23:05:00+08:00
description: Introduction / 引言大学期间用来打发无聊时间学的Python没想到竟然在写毕业论文的时候用处这么大，整个硕士论文所做研究，从前期的数据整理、数据分析，到最后的数据可视化我基本上都使用Python来完成，这篇博客就来分享下我毕业论文课题中所做数据分析相关的Python代码。本博文所有相关的代码都上传在GitHub仓库：Data-Analysis-for-Thesis，如果帮到你了，记得给我来个Star☺️，也可以顺便去参观下我的个人博客亚灿网志。Python环境配置环境安装首先是在Python官网下载你计算机对应的Python软件，然后安装。安装过程基本都是傻瓜式，不做过多叙述，一路回车即可。Python官网IDE选择然后就是IDE（Integrated Development Environment）的配置，最常见的肯定是VSCode，特点是足够轻量化且免费。但是我选择的是PyCharm，我选择它的理由是以前学Python的时候就用的它，因此快捷键什么的都比较熟悉。PyCharm正版是收费的，教育版可以申请一年的使用权限，破解版的自行百度即可。VSCodePyCharmWarning / 注意Pycharm也是可以申请教育版嘀，但是教育版并不支持编写Jupyter Notebook的.ipynb文件。Tips / 提示关于IDE的选择大家没必要纠结，新手不太了解想简单上手的话就选择VSCode；用过PyCharm并且熟练怎么破解安装的那就选择PyCharm。包的安装数据矩阵分析及处理：Pandas、Numpy、Math、Scipy；绘图可视化：Matplotlib、Seaborn；其他包：hues可以在控制台打印出彩色的提示信息，用法也比较简单，官方手册。hues的简单用法数据整理及预处理数据介绍论文所做内容简单来说就是对不同样本点的多个指标进行相关性分析，具体的数据格式就是：样本点变量1变量2变量nD-H1122424...L-N2324232...............基本常量的定义IMG_TYPE = '.svg' # 出图格式，我选择矢量图svg DATA_PATH, EXPORT_PATH, DPI = './data/', './export/', 300 # 数据存储路径、出图写入路径、出图DPI ROW_NUM, COL_NUM = 5, 3 # 对于多子图的图片，定义默认布图网格为5×3文件读取读取csv文件需要使用pandas的pd.read_csv()方法，具体的参数有：index_col：设置行索引为哪一列，可以使用序号或者列名称；sep：csv文件中的分隔符，默认常见的用法都可以自动识别，不需要设置；header：设置表头，参数为None就是没有表头，设置为n就是把第n行读取为表头；names：设置列名称，参数为list；usecols：仅读取文件内某几列。Quote / 参考具体用法可以参考李庆辉所著《深入浅出Pandas——利用Python进行数据处理与分析》3.2章 读取CSV（PDF P89）。数据表合并首先遇到的第一个需求就是，所有样本点的列变量存储在不同的数据表中，比如，样本点的指标分为上覆水的指标与沉积物的指标两部分，分别存储在两个或者多个数据表中，那么如何将两个或者多个数据表进行合并呢？all_df_0 = pd.concat([gene_abundance, sediment_env_df, eems_df, overlying_water_env_df, sediment_size_df], axis=1) # 将五个数据表按照行索引合并Quote / 参考具体用法可以参考李庆辉所著《深入浅出Pandas——利用Python进行数据处理与分析》7.2章 数据连接pd.concat（PDF P274）。根据行索引为每个样本点设置分类行索引也就是每个样本点的标记名，分别为“D-H1”、“L-N3”之类的，其中第一个字符的值为“D”、“L”、“W”，分别代表枯水期（Dry Season）、平水期（Level Season）、丰水期（Wet Season）；第二个字符为一个分隔符“-”；第三个字符的值为“N”、“P”、“H”，分别代表三条不同的河流，南淝河、派河、杭埠河；最后的数字代表是第几个样本点。例如：“D-H1”代表枯水期杭埠河第一个样本点、“L-N3”代表平水期南淝河第三个样本点。那么问题来了，我想要为合并后的数据表新增两列“River”、“Period”，分别来反应这个样本点的属性，应该如何实现呢？样本点变量1变量2变量nRiverPeriodD-H1122424...Hangbu RiverDry SeasonL-N2324232...Nanfei RiverL…

Study with engVid [02]
type: item
date: 2023-03-07T18:13:00+08:00
description: ? PREPOSITIONS - at on in/since for/during whileLinks / 链接Video course link: https://www.youtube.com/watch?v=D5ucI2Tw7H0at/on/inat: Specific.on: 1 day, 1 date.in: month, year, season, century.Example / 举例We could meet at 3:00.See you on Friday.I will be graduating from this university in May.since/forsince: + point(9:00, March, 1995)for: + period(5 minutes, 5 decades)Example / 举例She's been working here since 2018.I've lived here for two years.during/whileduring: + noun(this week, this meeting)while: + verb(watching TV, I was watching TV)Example / 举例I was busy during the day.The phone rang while we were sleeping.12 Confusing English VerbsLinks / 链接Video course link: https://www.youtube.com/watch?v=TIUuTNoLPWEbring/takeBring this over here and taking this over there.Example / 举例Could you please bring this gift to our teacher for me?please take this over there.hear/listenWhen we hear something, it just means some auditory information is coming through our ears. listen means we are paying attention to something. When you use "listen", you should add the "to" end of the "listen".Example / 举例Did you hear that sound?Please, could you be quiet? I's just trying to listen to the news.remember/remindTo remember just means don't forget. But when you remind, you tell someone else or you help someone else not to forget.Example / 举例Remember to drink eight glasses of water a dayPlease remind me to call John.borrow/lendLend or Borrow?Example / 举例I borrow some books from the library.The library lends me textbooks.coming/goingExample / 举例Come here! I want to show you something.When are you going there?spent/wastedWhen we use "spent", it just means the feeling is more neutral or positive. But "wasted" means some thing is useless, it's negative.Example / 举例I spent lots of money on my car, because I really love it.Don't waste your money on that movie. It's really bad!Talking about FAMILYLinks / 链接Video course link: https://www.youtube.com/watch?v=O3h7bUFrP0QThe favorite/favourite is the …

1000 Conversation in English [01]
type: item
date: 2023-03-05T19:35:00+08:00
description: AdviceWhat three pieces of advice will you give your children?Answer / 回答Actually, I'm not finishing my studies at this point. So I never thought about this question. Okay, Let me think... Firstly, I think my children should know that being a good man is more important than studying. Secondly, everything is easy said than done. You must become a brave person and step out of your comfort zone valiantly. Last but not least, Happiness is more important than money. Spend more time on things you enjoy. That's all, Thank you.Whose advice do you follow more, your parents' or your friends' advice?Answer / 回答Okay. About this question, I think it depends on different situations. Parents undoubtedly have more experience than us. But in some situations, parents aren't very clear about contemporary environment. So I think my friends will be more useful in these situations.If you could give the leader of your country some advice, what would it be?Answer / 回答In my daily life, I don't care about politics. So I think I will choose to say some questions about my major. You know my major is water environment science. I main job is to research how to make wastewater cleaner and more efficient. I hope the leader in my country should pay more attention to the water environment. Everyone should drink clean water every day. Water safety and water quality are important to our bodies.If you could go back in time and give yourself some advice, what would you tell your younger self?Answer / 回答This is an interesting question. If I could go back to my junior high school. I want to tell my younger self two things. First, pay more attention to your studies. Second, get more experience from your parents.Who was the wisest person in your country's history? What kind of advice did they give?Answer / 回答In my opinion, the wisest person in China's history is the leaders of the Communist Party. During World War II, these leaders guided the Chinese to defeat the invasion of Japan. Today, China is the worl…

Study with engVid [01]
type: item
date: 2023-02-22T19:29:00+08:00
description: ? “THANKS”: 5 Common ExpressionsLinks / 链接Video course link: https://www.youtube.com/watch?v=Io6-K5RrjvUExam link: https://www.engvid.com/thanks-5-common-expressions/Thank you.Usage: We use "thank you" when someone helps us or does something for us.Example / 举例Thank you for your help.Thank you for the gift.Thank you for coming to my party.Tips / 提示When always use:You're welcome.It's no problem.to answer the "thank you".Thanks.Usage: Sometimes, we want to speak a little bit more informally, especially if we're talking with our friends or family. So, another way to say "thank you" is to say "thanks".Example / 举例Thanks.Thanks for your help.Warning / 注意You should never use it in writing business emails, because it's informal.Thanks anyway.Usage: we use "Thanks anyway" or "Thanks anyways" when we ask someone for help, but they can't give us the help that we need.Example / 举例When you are in a supermarket.You: Hi, I'd like to buy some apples. Where are the apples?Waiter: Sorry, we're out of apples. No apples today.You: Thanks anyway.You are talking with your friend Jill.You: Can you drive me to the airport?Jill: I can't. My car is at the mechanic.You: Thanks anyway.Tips / 提示What's the different between "Thanks anyway" or "Thanks anyways"?"Thanks anyway" is more formal. But "Thanks anyways" is more slang.Thanks though.Usage: we use it when someone want to help us or do something for us or offer something, but we don't want the help or the offer. This is a polite way to express I don't need your help.Example / 举例When you are in your office.Mickey: Can I buy you coffee?You: Thanks though.Your friend Barbie wants to invite you to the beach.Barbie: I'm going to the beach, want to come?You: I have my work. Thanks though for the invite.Your friend Tony wants to invite you to dinner.Tony: Can I give you a hand with dinner?You: It's already cooking. Thanks though.Thanks, but no thanks.Usage: It has multiple meanings.Impolite: strong rejection.When telling a story to show strong rej…

Accumulation of Learning English [05]
type: item
date: 2022-09-19T15:36:00+08:00
description: How to be diplomatic (soften your language).In some situations, you should be diplomatic so that you don't offend anyone.Soften the language.Using modal verbs.Using negative questions.1、This isn't good.I think this could be improved.Why don't we make some changes to this?Wouldn't this be better if ...?2、I don't like it.I'm not a big fan of ...I'm not too keen on ......isn't really to my taste....isn't my cup of tea....isn't my favourite.3、You're wrong.I'm not sure that's entirely accurate.4、I’m not satisfied with ...This isn't exactly what I had in my mind.I have some reservations.5、Would you like to ...I'm afraid I can't at the moment. Actually, I need to ...6、Can I speak to you?I'm a bit busy right now, could you give me a minute?That's not a bad idea, but .... How about ...?Do/Did you Know ...?What's the difference between "Did you know" and "Do you know"?Do you know means we don't know something(the answer) but we want to get some infoamation.Examples:Do you know where I can buy nice shoes?Do you know what time it is?Did you know means I know this and I want to tell you a fact. I want to see you know the fact.Examples:Did you know Mt.everst is the world's tallest mountain?Did you know the most common letter in English is "e"?Phrasal Verbs: Add “OUT” to change the meaning of these 8 verbsCourse Links: https://www.youtube.com/watch?v=Cr4RYby4L6QLooking out is used to mean be careful(Look out! The car is coming!). On the other hand, Look out means paying attention to do something(I will look out for you!).Staying out means to remain out for a long time(He stayed out all night).Pointing out means to draw your attention to something(My teacher always points out my mistakes carefully).Working out means exercising or solving questions.Wearing out means something can't be used anymore it's no longer usable. On the other hand, it means you're so tired(My T-shirt is wearing out. / Today I'm so tired, I am wearing out.).Ruling out means you eliminate the possibility(You ca…