1

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

根据实验结果,我使用 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')
4

1 回答 1

1

这些方面的东西应该起作用:

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]]
于 2013-10-31T11:37:31.853 回答