从两个矩阵的比较中创建新矩阵

时间:2021-07-02 10:26:12

标签: python numpy matrix comparison

我有两个矩阵 X1X2 表示多项式的复数解:

X1=(N.t[:,1,1]-N.t[:,0,0]-np.sqrt(delta))/2*(N.t[:,1,0])
X2=(N.t[:,1,1]-N.t[:,0,0]+np.sqrt(delta))/2*(N.t[:,1,0])

我正在尝试创建两个新矩阵 C1C2C1 必须包含最大值:max(X1, X2)C2 必须包含最小值值:min(X1, X2)。我使用 np.abs 来比较这些值,因为它们很复杂,但我不知道如何进行索引。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

要比较复数,您首先需要使用它们的绝对值将它们“转换”为实数:

X1_real, X2_real  = np.abs(X1), np.abs(X2)

然后,你可以简单地使用numpy的where函数,如下:

boolean_array = (X1_real >= X2_real) # Or >, as you want.

C1 = np.where(boolean_array, X1, X2) # If X1_real[i] is >= X2_real[i], then C1[i] will be equal to X1[i], otherwise to X2[i].
C2 = np.where(boolean_array, X2, X1) # The opposite here.

这匹配您寻求的最大和最小数组!

相关问题