Рассчитать максимум и минимум из трех матриц - PullRequest
0 голосов
/ 20 декабря 2018

У меня было три матрицы, и я хотел вычислить минимум и максимум Rl и первых столбцов Ex1 и Ex2.Я сохраняю минимум в Il и максимум в Ih.Когда я оцениваю максимум, матрица Il меняется на Ih, не знаю почему.Кроме того, расчет максимума на самом деле не является максимальным.Код приведен ниже вместе с наблюдаемыми и ожидаемыми результатами.Можно ожидать, что первое и третье операторы print будут выдавать одинаковые выходные данные, но это не так.

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]]

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Поскольку 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]]
0 голосов
/ 20 декабря 2018

Numpy's .minimum() и .maximum() просто не работают с более чем двумя массивами.Этот третий параметр интерпретируется как выходной массив, поэтому вы перезаписываете Ex2 и каждый раз печатаете его измененное содержимое.

...