python - numpy 从三个元素中获取非最小或最大元素

标签 python numpy

我有一个三维数组:

 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/

相关文章:

python - 将列表作为元素附加到空 numpy 数组

python - 使用python检测日志文件中是否存在csv列中的字符串?

python 检查列表中键的字典值是否重复

python - Flask 发送文件而不存储在服务器上

python - Py2Neo 没有正确创建日期时间数据类型?

使用另一个数组/列表的 Python 索引

python - Paramiko 仅连接到 IP 地址而不是 Python 中的主机名?

python - 在 for 循环中创建多个数组 (Python)

python - 在 Python .Net 中将 C# 字节数组转换为 numpy 数组

python - 使用tensordot实现批量矩阵乘法