我应该定义一个新函数来制作厄米特矩阵吗?

Should I define a new function for making a matrix Hermitian?

X为方阵。我们想强制它是 Hermitian,即:自共轭转置。 X = X^H = conj(X^T)。在 Python 和 numpy 中做到这一点很容易:

X = 0.5*(X + np.conj(X.T))

我还没有在 NumPy 中找到一个可以在单个表达式中完成它的函数 f(x)。 问题是我应该定义一个新函数来做到这一点吗?例如

def make_hermitian(X):
    return 0.5*(X + np.conj(X.T))

(可以想出简称,例如“make_h”或“herm”或“selfconj”)。

优点: 代码更具可读性,一次操作的形式更短。如果使用较短的名称,重复多次时可以省去书写,并且在这个操作中修改起来更加容易和舒适(只需要修改到位)。

缺点: 替换了一个不言自明的非常简短直接的表达式。

哪种编程方式更合适:定义一个新函数还是重复编写显式表达式?

我会说这取决于您需要重复使用该功能的次数。

如果超过两次,那肯定做一个函数。如果只有一两次,我会说这取决于你。如果您选择不使用任何功能,请添加一个简短的注释,说明这段代码应该做什么。

在任何情况下,我的偏好是定义一个具有有意义名称的函数,因为如果其他人打算/应该阅读代码,他们可能不知道或不记得如何实现厄米矩阵,因此仅靠数学是不够的。

另一方面,一个有意义的函数名会清楚地告诉他们它是怎么回事,他们可以google知道厄米矩阵是什么。