我有一个三维数组:
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)
虽然当你只需要一个最大值和最小值时,通常排序是过度的,在这种情况下我认为它是最简单的.它直接将我们想要的数字放在易于访问的位置,无需任何复杂的算术.
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)
这通常是一个好兆头.;-)
另一种选择是使用 np.median
(y.max(2) - 2 * y.min(2)) / np.median(y, 2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |