我有三个矩阵,我想计算R1的最小值和最大值以及Ex1和Ex2的第一列。我将最小值保存在Il中,将最大值保存在Ih中。当我评估最大值时,矩阵Il更改为Ih,不知道为什么。同样,最大值的计算实际上并不是最大值。下面给出了代码以及观察到的和预期的输出。人们会期望第一和第三打印语句提供相同的输出,但事实并非如此。
import numpy as np
Rl = np.matrix([[70,15,10,15,65]]).transpose()
Ex1 = np.matrix([[20,10,40,2,40] ,[ 55,22,50,10,60],
[80,40,75,25,80]]).transpose()
Ex2 = np.matrix([[30,20,30,10,50],[50,30,50,20,60],
[60,40,70,30,70]]).transpose()
Il = np.minimum(Rl[:,0],Ex1[:,0],Ex2[:,0])
print("Il =\n {}\n".format(Il))
Ih = np.maximum(Rl[:,0],Ex1[:,0],Ex2[:,0])
print("Ih =\n {}\n".format(Ih))
print("Il =\n {}\n".format(Il))
实际结果
Il =
[[20]
[10]
[10]
[ 2]
[40]]
Ih =
[[70]
[15]
[40]
[15]
[65]]
Il =
[[70]
[15]
[40]
[15]
[65]]
预期结果
Il =
[[20]
[10]
[10]
[ 2]
[40]]
Ih =
[[70]
[20]
[40]
[15]
[65]]
Il =
[[20]
[10]
[10]
[ 2]
[40]]
答案 0 :(得分:2)
Numpy的.minimum()
和.maximum()
不能用于两个以上的数组。该第三个参数被解释为输出数组,因此您将覆盖Ex2
并每次打印其修改后的内容。
答案 1 :(得分:0)
由于np.minimum()
和np.maximum()
一次只比较2个数组,因此您可以嵌套它们以比较3个数组。例如:
import numpy as np
a = np.matrix([[70,15,10,15,65]]).transpose()
b = np.matrix([[20,10,40,2,40],[55,22,50,10,60],[80,40,75,25,80]]).transpose()
c = np.matrix([[30,20,30,10,50],[50,30,50,20,60],[60,40,70,30,70]]).transpose()
abc_min = np.minimum(np.minimum(a[:,0], b[:,0]), c[:,0])
abc_max = np.maximum(np.maximum(a[:,0], b[:,0]), c[:,0])
print("abc_min =\n {}\n".format(abc_min))
print("abc_max =\n {}\n".format(abc_max))
# OUTPUT
# abc_min =
# [[20]
# [10]
# [10]
# [ 2]
# [40]]
#
# abc_max =
# [[70]
# [20]
# [40]
# [15]
# [65]]