我有一个三维数组:
y = np.random.randint(1,5 ,(50,50,3))
我想计算第三个轴(3 个元素)的最大值和最小值,然后除以剩余的数字/元素。
所以像这样:
x = (np.max(y, axis =2) - 2*np.min(y, axis =2))/the third number
我不知道如何得到第三个数字。 需要注意的是,第三个数字有可能等于最小值或最大值:
例如(5,5,1)
最佳答案
虽然通常当您只需要最大值和最小值时排序就有点矫枉过正了,但在这种情况下我认为这是最简单的。它直接将我们想要的数字放在容易访问的地方,而不需要任何复杂的算法。
y = np.random.randint(1, 5, (50, 50,3))
y2 = y.copy()
y2.sort(axis=2)
sout = (y2[...,2] - 2 * y2[...,0]) / y2[...,1]
这给了我
In [68]: (sout == divakar_out).all()
Out[68]: True
这通常是一个好兆头。 ;-)
关于python - numpy 从三个元素中获取非最小或最大元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47234513/