我在弄清楚如何将一个大数据集排序为更有用的数据时遇到了问题。在
CSV格式的原始文件如下所示-数据表示x、y、z位置,最后是能量。x,y,z坐标的分布方式有很多种,这是下面的一个小片段-基本上是对一个体积的能量搜索。在
-2.800000,-1.000000,5.470000,-0.26488315
-3.000000,1.000000,4.070000,-0.81185718
-2.800000,-1.000000,3.270000,1.29303723
-2.800000,-0.400000,4.870000,-0.51165026
不幸的是,很难在必要的四个维度上绘制,所以我需要修改这些数据。我想用这样一种方式,把体积变成一个在最低能量z轴上的曲面。对于较小的数据集,这很简单,在excel中按X、Y、energy进行排序,然后删除最低值以上的所有能量。对于小数据集来说,这很容易,但很快就成了问题。在
我尝试过各种方法来实现这一点,比如分割csv和使用sort命令,但是我运气不太好。如有任何关于如何处理这一问题的建议,我们将不胜感激。在
将数据读入带有csv.reader的元组列表后,按
(x, y)
值对数据进行排序。为了清楚起见,请使用named tuples来标识字段。在然后使用itertools.groupby对相关的
(x, y)
数据点进行聚类。对于每一组,使用min来隔离能量最低的那一组:我想numpy的lexsort可以满足你的分类需求。在
总的来说,我认为你的步骤是:
把csv读入numpy数组有没有试过python的csv package或numpy的^{} function ?
使用lexsort进行排序
删去不必要的行
编辑:参见this related SO question。在
这是您在评论Raymond的答案时所要求的,它只返回每个
x, y
对的最低z
行:印刷品:
^{pr2}$相关问题 更多 >
编程相关推荐