我想向您提供一些背景信息,以便您更好地理解我的问题。
根据实验结果,我使用 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 : How do I make an array sorted by one of its columns from a bigger one saved with h5py?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19704880/