python – NumPy:从数值的记录数组中获取最小值/最大值

我有一个NumPy记录数组的浮点数:

import numpy as np
ar = np.array([(238.03, 238.0, 237.0),
               (238.02, 238.0, 237.01),
               (238.05, 238.01, 237.0)], 
              dtype=[('A', 'f'), ('B', 'f'), ('C', 'f')])

如何从此记录数组中确定最小值/最大值?我通常的ar.min()尝试失败了:

TypeError: cannot perform reduce with flexible type

我不确定如何将值展平为更简单的NumPy数组.

最佳答案
最简单,最有效的方法可能是将您的阵列视为simple 2D array of floats

ar_view = ar.view((ar.dtype[0], len(ar.dtype.names)))

这是结构化数组上的2D数组视图:

print ar_view.min(axis=0)  # Or whatever…

此方法很快,因为没有创建新数组(更改为ar_view会导致更改为ar).但是,它仅限于像您这样的情况,其中所有记录字段具有相同的类型(float32,此处).

一个优点是该方法保持原始数组的2D结构完整:例如,您可以在每个“列”(轴= 0)中找到最小值.

转载注明原文:python – NumPy:从数值的记录数组中获取最小值/最大值 - 代码日志