我有一个 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()
失败并显示:
类型错误:无法使用灵活类型执行reduce
我不确定如何将这些值展平为更简单的 NumPy 数组。
最简单、最有效的方法可能是view你的数组作为简单的二维浮点数组 https://stackoverflow.com/a/10171321/42973:
ar_view = ar.view((ar.dtype[0], len(ar.dtype.names)))
这是结构化数组的二维数组视图:
print ar_view.min(axis=0) # Or whatever…
此方法速度很快,因为没有创建新数组(更改为ar_view
导致改变ar
)。不过,它仅限于像您这样的情况,其中所有记录字段都具有相同的类型(此处为 float32)。
一个优点是这种方法保持了原始数组的二维结构完整:你可以找到最小值在每个“列”中 (axis=0
), 例如。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)