numpy从三个元素中获取not min或max元素

Moo*_*dra 4 python numpy

我有一个三维数组:

 y = np.random.randint(1,5 ,(50,50,3))
Run Code Online (Sandbox Code Playgroud)

我想计算第三个轴上的最大值和最小值(3个元素),然后除以剩余的数字/元素.

所以像这样:

x = (np.max(y, axis =2) - 2*np.min(y, axis =2))/the third number
Run Code Online (Sandbox Code Playgroud)

我不知道如何获得第三个数字.需要注意的是,第三个数字有可能等于最小值或最大值:

例如(5,5,1)

DSM*_*DSM 5

虽然当你只需要一个最大值和最小值时,通常排序是过度的,在这种情况下我认为它是最简单的.它直接将我们想要的数字放在易于访问的位置,无需任何复杂的算术.

y = np.random.randint(1, 5, (50, 50,3))
y2 = y.copy()
y2.sort(axis=2)
sout = (y2[...,2] - 2 * y2[...,0]) / y2[...,1]
Run Code Online (Sandbox Code Playgroud)

这给了我

In [68]: (sout == divakar_out).all()
Out[68]: True
Run Code Online (Sandbox Code Playgroud)

这通常是一个好兆头.;-)


piR*_*red 5

另一种选择是使用 np.median

(y.max(2) - 2 * y.min(2)) / np.median(y, 2)
Run Code Online (Sandbox Code Playgroud)