Function 我应该定义一个新函数来生成矩阵厄米特吗?

Function 我应该定义一个新函数来生成矩阵厄米特吗?,function,numpy,structure,software-design,Function,Numpy,Structure,Software Design,设X为正方形矩阵。我们想强迫它是厄米特的,即:自共轭转置X=X^H=conj(X^T)。在Python中使用numpy实现这一点很容易: X = 0.5*(X + np.conj(X.T)) 在NumPy中,我还没有发现一个函数可以在一个expressionf(x)中实现它。 问题是我应该定义一个新函数来完成它吗?例如 def make_hermitian(X): return 0.5*(X + np.conj(X.T)) (你可以想出一个简短的名字,例如“make_h”或“herm

X
为正方形矩阵。我们想强迫它是厄米特的,即:自共轭转置
X=X^H=conj(X^T)
。在Python中使用
numpy
实现这一点很容易:

X = 0.5*(X + np.conj(X.T))
在NumPy中,我还没有发现一个函数可以在一个expression
f(x)
中实现它。 问题是我应该定义一个新函数来完成它吗?例如

def make_hermitian(X):
    return 0.5*(X + np.conj(X.T))
(你可以想出一个简短的名字,例如“make_h”或“herm”或“selfconj”)

优点:可读性更强的代码,一次操作的形式更短。如果使用较短的名称,则在重复多次时可以节省书写时间,并使此操作中的修改更加容易和舒适(只需就地更改)

缺点:取代了一个非常简短、直截了当的表达,这是不言而喻的


什么是更合适的编程方式:定义一个新函数或只是重复编写显式表达式?

我认为这取决于需要重用该函数的次数

如果超过两次,那么一定要做一个函数。如果只有一两次,我会说这取决于你。如果您选择不使用任何函数,请添加一条简短的注释,指定这段代码应该执行的操作

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


另一方面,一个有意义的函数名会清楚地告诉他们发生了什么,他们可以用谷歌搜索厄米矩阵。

我接受你的答案,但我想听听更多的意见。@Triceratops当然,对我来说是有意义的