我想给您一些背景信息,以便您更好地理解我的问题。

从实验结果中,我使用h5py填充了一个带有许多列的hdf5大表。完成所有测量后,我需要绘制并拟合一些结果。这已经可以工作了,但是当我想绘制拟合函数时,因为我的数据不是按带有“ x”轴数据的列排序的,而不是单行,所以我会发现一个丑陋的第四行(我会告诉您,但我的声誉还不够高)。

所以我首先想到的是在绘制和拟合之前对数组进行排序。我尝试遵循在这里找到的几条指南,但是我加入的数组的形状不正确,那时候我可以做一个更好的方法了。

所以我的问题是,使用h5py从保存在hdf5文件中的更大数组中按其列之一对数组进行排序的最佳方法是什么?

这是我目前正在做的事情:

假设我已经从hdf5文件中提取了列(即使也许可以改进!),现在我正在对它们进行组合。

x_d = array([5, 2, 10, 4])
y_d = array([0.2, 1.0, 4.1, 0.1])

wtype = np.dtype([('x', x_d.dtype), ('y', y_d.dtype)])
w = np.empty(len(x_d), dtype=wtype)
w['x'] = x_d
w['y'] = y_d

w.sort(order='x')

最佳答案

遵循这些原则的方法应该起作用:

f = h5py.File('myfile.hdf5','r')
x_d = f['x_axis'][:]
y_d = f['values'][:]
sorted_y = y_d[numpy.argsort(x_d)]


或者,如果您想要相反的顺序:

sorted_y = y_d[numpy.argsort(x_d)[::-1]]

关于python - numpy,h5py:如何从使用h5py保存的较大列中按其列之一排序数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19704880/

10-12 22:18